Как разобрать строку, чтобы удвоить - PullRequest
3 голосов
/ 04 декабря 2010

Вот моя строка

  20.0e-6

Я анализирую это как

String Ans=Double.Parse("20.0e-6")

Теперь я получаю результат как 2E-05 Но требуемый вывод должен быть как 0.00002

Как это получить?

Ответы [ 3 ]

10 голосов
/ 04 декабря 2010

Результатом Double.Parse является Double, а не строка.Вам нужно вывести строку из двойного числа, используя ToString.

Вам также следует использовать перегрузку Double.Parse, которая имеет параметр NumberStyles,Использование значения Float позволяет использовать экспонентную запись:

string Ans=Double.Parse("20.0e-6", NumberStyles.Float).ToString("0.#####");

Если вы не хотите рисковать исключениями (например, InvlidCastException), вы можете использовать TryParse:

Double res;
if (Double.TryParse("20.0e-6", NumberStyles.Float, 
                    CultureInfo.InvariantCulture ,res))
{
  string Ans = res.ToString("0.#####");
}
2 голосов
/ 04 декабря 2010

Это то же число, но если вы хотите изменить вывод строки, используйте форматер на вашем ToString()

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

So

String Ans=Double.Parse("20.0e-6").ToString("0.0####")
0 голосов
/ 04 декабря 2010

Один из способов получить желаемый результат - использовать String.Format следующим образом:

double x = 20.0e-6;

string y = string.Format("{0:0.######}",x);

Console.WriteLine(y);

. Для вашего примера выдается значение 0.00002

РЕДАКТИРОВАТЬ

Я только что понял, что это на самом деле противоположность вашего вопроса, поэтому в целях сохранения полезности ответа я добавлю следующее:

Учитывая строку, выможно проанализировать как double, а затем применить ту же логику, что и выше.Возможно, это не самое элегантное решение, однако оно предлагает другой способ получить желаемый результат.

string x = "20.0e-6";

var y = double.Parse(p);

Console.WriteLine(String.Format("{0:0.######}",y));
...