使用 double.Parse(string) 函数时出现错误的值。

4

我正在尝试在 .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

对我来说,它有效:

double.Parse("8.493151E-2");  
0.08493151
你可能使用的是小数点为,,千位分隔符为.的地区设置。
因此,它被视为8,493,151E-2,实际上等同于84,931.51

请将其更改为

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

好的,可以! 我没有尝试使用IFormatProvider。谢谢! - Kai
@flashfail - 如果您没有指定 IFormatProvider,它将使用您计算机的区域设置。您的位置为“DE Oldenburg”,我假设您在德国使用小数逗号和千位分隔符“。”。 - ChrisF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接