使用 AllowDecimalPoint 解析 "1.5" 会给出 FormatException



当我尝试使用C#交互式编译器运行此代码时

double.Parse("1.5", System.Globalization.NumberStyles.AllowDecimalPoint);

我有这个例外

System.FormatException: Input string was not in a correct format.
+ System.Number.ParseDouble(string, System.Globalization.NumberStyles, System.Globalization.NumberFormatInfo)
+ double.Parse(string, System.Globalization.NumberStyles)
+ <Initialize>.MoveNext()

我已经从文档中读到了这一点,但我并没有从中变得更明智

表示数字字符串可以有小数点。如果NumberStyles值包含AllowCurrencySymbol标志,并且解析的字符串包含货币符号,则十进制分隔符由CurrencyDecimalSeparator属性确定。否则,十进制分隔符由NumberDecimalSeparator属性决定。

下面的代码也给了我相同的错误:

double.Parse("1.500", System.Globalization.NumberStyles.AllowDecimalPoint);

为什么我有这个错误?我原以为它会给我1.5的双精度,因为小数点是允许的。

旁注:我的计算机配置为使用逗号作为十进制分隔符,这意味着下面的代码可以工作。

double.Parse("1,5", System.Globalization.NumberStyles.AllowDecimalPoint);

向调用添加第三个参数

double.Parse("1.5", System.Globalization.NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture);

发生这种情况的原因是您的区域设置不接受点作为小数分隔符,因此您需要添加该参数来解释您正在分析小数分隔符为点的数字。

相关内容

  • 没有找到相关文章

最新更新