2010-07-13 3 views
4

Я пытаюсь преобразовать строку в двойное значение в .Net 3.5. Довольно легко до сих пор сНеверное значение с double.Parse (string)

double.Parse(value); 

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

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

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

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

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

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

ответ

15

Это работает для меня:

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

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

Изменить его

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

Ok, это работает! Я не пытался использовать его с IFormatProvider Спасибо! – Kai

+0

@flashfail - если вы не укажете 'IFormatProvider', он будет использовать локаль вашего компьютера. Вы указываете свое местоположение как «DE Oldenburg», которое я предполагаю в Германии, где вы используете десятичную запятую и «.». как разделитель тысяч. – ChrisF

Смежные вопросы