Convert.ToDouble在法语系统中抛出错误

时间:2012-12-12 06:08:58

标签: c# winforms

当字符串将字符串值转换为double值时,我遇到了问题。 例如:

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

在法国系统上执行此代码时会抛出错误,因为在法语中他们使用(逗号)代替。(点)。

任何解决方案???

2 个答案:

答案 0 :(得分:11)

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

Double.Parse(val, System.Globalization.CultureInfo.InvariantCulture);

答案 1 :(得分:2)

使用正确的Culture来解析数据。

如果“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”值,最好简单地停下来思考应该使用什么文化。