3

我有这样的字符串,我想将它转换为双精度。

string x = "65.50";
double y = Convert.ToDouble(x);

但结果是 6550.0

我希望它是 65.50。

我正在使用 ASP.NET 和 C#。我认为这是全球化的问题。

这是我对此感到抱歉的问题(:

4

3 回答 3

8

是的,是您当前的文化以这种方式转换它。您可以使用CultureInfo.InvariantCulture跳过使用您的文化。

double d = double.Parse("65.50", CultureInfo.InvariantCulture);

我希望它是 65.50。

如果要将其转换回字符串:

string str = d.ToString("N2", CultureInfo.InvariantCulture);  

我认为这是一种货币,因为您保留小数位。那么你应该decimal改用:

decimal dec = decimal.Parse("65.50", CultureInfo.InvariantCulture); // 65.5

现在您可以使用decimal.ToString它并自动恢复小数位:

string str = dec.ToString(CultureInfo.InvariantCulture); // "65.50"
于 2013-09-03T13:22:38.853 回答
1

最近我有一个类似的问题。解决方案 :

var result = Double.TryParse(x, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out y);

如果你得到 true,那就是 x 被转换为 double

于 2013-09-03T13:27:12.390 回答
0

尝试这个:

var res =  Double.Parse("65.50", NumberStyles.Float, CultureInfo.InvariantCulture);

它将用.浮动分隔符所在的区域性解析它

在这里你可以试试:http: //ideone.com/3LMVqa

于 2013-09-03T13:20:27.543 回答