System.FormatException 将 String 解析为 double

System.FormatException when parsing String to double

该代码在 Unity 中运行良好。现在我在控制台项目中使用相同的代码,我得到一个 System.FormatException 异常。

密码是:

private double ConvertToNumber(string number)
        {      
            return double.Parse(number, numberStyle);
        }

调用时参数为:

number = "3.138924e-002"
numberStyle = NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign

有没有人看到这个错误,或者知道是什么导致了这个错误?

@Selvin 关于 CultureInfo.InvariantCulture 将其添加为参数修复了错误。

return double.Parse(number, numberStyle, CultureInfo.InvariantCulture);

抛出异常是因为您提供的字符串无法使用您指定的格式和您自己的当前文化转换为数字。后者是隐含的,除非您指定它。

如果您从数据库中读取此值,则应使用不变区域性(即旨在在您需要的任何地方以一致的方式保留数字和日期的区域性,用户界面除外)。

您的代码变为:

return double.Parse(number, numberStyle, System.Globalization.CultureInfo.InvariantCulture);

相反,如果您需要特定的文化,则需要传递正确的文化来代替不变的文化。