我在.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);