我在.NET 3.5中将字符串转换为double时遇到了一个奇怪的问题。这是我的代码:
dbl = double.Parse(str);
当str是带有像“5.67”这样的简单double的字符串时,dbl的结果是567.0。
答案 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);