使用 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);
发生这种情况是因为您的区域设置不接受点作为小数点分隔符,因此您需要添加该参数来说明您正在解析小数点分隔符为点的数字。
当我尝试使用 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 theAllowCurrencySymbol
flag and the parsed string includes a currency symbol, the decimal separator character is determined by theCurrencyDecimalSeparator
property. Otherwise, the decimal separator character is determined by theNumberDecimalSeparator
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);
发生这种情况是因为您的区域设置不接受点作为小数点分隔符,因此您需要添加该参数来说明您正在解析小数点分隔符为点的数字。