2

将字符串值转换为双精度值时遇到问题。例如:

string val="2.0";
double dval=Convert.ToDouble(val);

在法语系统上执行此代码时会引发错误,因为在法语中他们使用 ,(comma) 而不是 .(dot)。

有什么解决办法???

4

2 回答 2

11
Convert.ToDouble(val, System.Globalization.CultureInfo.InvariantCulture);

或者

Double.Parse(val, System.Globalization.CultureInfo.InvariantCulture);
于 2012-12-12T06:12:06.100 回答
2

使用正确的文化来解析数据。

如果“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”值时使用了什么文化,最好停下来想想应该使用什么文化。

于 2012-12-12T06:15:46.043 回答