将带逗号的字符串数转换为特定于区域性的双精度数

时间:2012-10-24 12:55:16

标签: c#

NumberFormatInfo numberInfo = CultureInfo.CurrentCulture.NumberFormat;
double result = Convert.ToDouble("2,75", numberInfo); 

result = 2.75

我目前的用户界面/文化是“de-DE”。

为什么我得不到2,75?

3 个答案:

答案 0 :(得分:5)

因为您没有获得string结果,只有double。然后如何显示以后加倍不受上述代码的影响。

如果你想在屏幕上看到“2,75”,你需要将double格式化为字符串,添加numberInfo。

答案 1 :(得分:3)

试试这个获得2,75: -

  string.Format(System.Globalization.CultureInfo.GetCultureInfo("de-DE"), "{0:0.0}", 2.75);

或者你也可以试试这个: -

  NumberFormatInfo n= new NumberFormatInfo();
  n.NumberDecimalSeparator = ",";
  n.NumberGroupSeparator = ".";

  double d= 2.75;
  string s= d.ToString(n); //2,75

答案 2 :(得分:2)

你得到2.75。这只是显示数字的不同方式。

double值不包含有关格式的信息。它既不是2.75也不是2,75,它只是一个数值。

如果使用使用逗号作为小数分隔符的区域性显示数字,您将得到您期望的结果,例如:

Console.WriteLine(result.ToString(CultureInfo.GetCultureInfo(1053)));

输出:

2,75