将字符串值转换为双精度值时遇到问题。例如:
string val="2.0";
double dval=Convert.ToDouble(val);
在法语系统上执行此代码时会引发错误,因为在法语中他们使用 ,(comma) 而不是 .(dot)。
有什么解决办法???
Convert.ToDouble(val, System.Globalization.CultureInfo.InvariantCulture);
或者
Double.Parse(val, System.Globalization.CultureInfo.InvariantCulture);
使用正确的文化来解析数据。
如果“2.0”来自某些标准源(即 XML),请使用CultureInfo.InvariantCulture
(如 abatishcev 建议的那样)。
如果“2.0”来自已知文化的用户输入 - 使用该文化(en-US 示例):
double dval = Double.Parse("2.0", new CultureInfo("en-US"));
如果它来自本地用户的输入,它应该在正确的用户文化设置中 - 对于“fr-FR”应该是“2,0”。
如果您不知道输入“2.0”值时使用了什么文化,最好停下来想想应该使用什么文化。