使用 AllowDecimalPoint 解析“1.5”给出 FormatException

Parsing "1.5" with AllowDecimalPoint gives 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()

我从 the documentation 那里读到这篇文章,但我并没有从中获得更多智慧。

Indicates that the numeric string can have a decimal point. If the NumberStyles value includes the AllowCurrencySymbol flag and the parsed string includes a currency symbol, the decimal separator character is determined by the CurrencyDecimalSeparator property. Otherwise, the decimal separator character is determined by the NumberDecimalSeparator property.

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

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

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