繁体   English   中英

将String解析为double时发生System.FormatException

[英]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

有人看到错误,还是知道可能是什么原因造成的?

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

如果要从数据库读取此值,则应使用不变区域性(即,用于在用户所需的任何位置(用户界面除外)以一致的方式持久存储数字和日期的区域性)。

您的代码变为:

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

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

@ Selvin关于CultureInfo.InvariantCulture是正确的,将其添加为参数可以修复错误。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM