double.parse(str)结果按数量级关闭

时间:2012-03-05 10:04:05

标签: c#-3.0 windows-ce

我在.NET 3.5中将字符串转换为double时遇到了一个奇怪的问题。这是我的代码:

   dbl = double.Parse(str);

当str是带有像“5.67”这样的简单double的字符串时,dbl的结果是567.0。

2 个答案:

答案 0 :(得分:2)

我猜这是本地化问题,您需要使用overload that specifies a format provider

问题很可能是期望,为小数点分隔符而.为千位分隔符(因此忽略它有效)。

重现可能问题的示例:

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

答案 1 :(得分:0)

我只是在编辑克里斯的答案:

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);