Неверное значение с double.Parse (строка) - PullRequest
4 голосов
/ 13 июля 2010

Я пытаюсь преобразовать строку в двойное значение в .Net 3.5.До сих пор довольно просто с

double.Parse(value);

Моя проблема в том, что значения с экспоненциальными тегами не конвертируются правильно.Пример:

double value = double.Parse("8.493151E-2");

Значение должно быть = 0,0893151, верно?Но это не так!Значение = 84931,51 !!!

Как это может быть?Я полностью сбит с толку!

Я прочитал ссылку в библиотеке msdn, и она подтверждает, что поддерживаются такие значения, как "8.493151E-2".Я также пытался перегрузить double.Parse () с NumberStyles, но безуспешно.

Пожалуйста, помогите!

1 Ответ

15 голосов
/ 13 июля 2010

у меня работает:

double.Parse("8.493151E-2");  
0.08493151

Вы, вероятно, работаете в локали, которая использует , для десятичного разделителя и . для разделителя тысяч.
Следовательно, он обрабатывается как 8,493,151E-2, что фактически эквивалентно 84,931.51.

Измените его на

double value = double.Parse("8.493151E-2", CultureInfo.InvariantCulture);
...