当我尝试使用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);
发生这种情况的原因是您的区域设置不接受点作为小数分隔符,因此您需要添加该参数来解释您正在分析小数分隔符为点的数字。