double.parse(str)的结果在数量级上是错误的



我在.NET3.5中将字符串转换为双精度时遇到了一个奇怪的问题。这是我的代码:

   dbl = double.Parse(str);

当str是带有简单双精度(如"5.67")的字符串时,dbl的结果是567.0。

我想这是本地化问题,您需要使用指定格式提供程序的重载。

问题可能是它期望,作为十进制分隔符,.作为千位分隔符(因此实际上忽略了它)。

重现可能问题的示例:

string input = "5.67";
Console.WriteLine(Double.Parse(input, new CultureInfo("en-gb")));
Console.WriteLine(Double.Parse(input, new CultureInfo("de-de")));

该输出:

5.67
567

我正在编辑Chris的答案:

value = "5.67";
double out;
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
culture = CultureInfo.CreateSpecificCulture("en-GB");
Console.WriteLine(Double.TryParse(value, style, culture, out number)?number:0);

最新更新