全球化C#:百分比数据格式:

时间:2013-02-26 09:30:18

标签: c# globalization

格式化百分比数据的方式是否也是CultureInfo的一部分?通过格式化,我的意思是,是否将其显示为47.3或0.473等。

我的实际问题是,对于DE语言,我必须使用47.3%的表示法,而其他人使用0.473,所以我看这些东西是否也取决于文化,就像用于小数点的符号一样。

2 个答案:

答案 0 :(得分:7)

你必须编写代码才能做到这一点,例如:

string.Format("Value: {0:P2}.", 0.473) // formats as 47.3 % (varies by culture)

P format string根据文化来管理格式。

值得注意的是,P格式说明符将数字乘以100 ,因为它基于十进制表示法(1表示100%,0.5表示50%等)

以下使用de-DE文化:

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");

Console.WriteLine("1. " + string.Format("Value: {0:P2}.", 0.473));
Console.WriteLine("2. " + string.Format("Value: {0:P2}.", 47.3));

将输出:

  
      
  1. 47.30%
  2.   
  3. 4,730.00%
  4.   

与英国文化en-GB输出的内容相同。

使用土耳其文化运行相同的代码突出了格式的差异(因为他们使用%23而不是23%)。

Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");

运行上面的代码(打印上面用于德国文化的两行)将输出:

  
      
  1. %47.30
  2.   
  3. %4,730.00
  4.   

答案 1 :(得分:3)

  

格式化百分比数据的方式是否也是CultureInfo的一部分?

是的,但不是你想要的方式。您可以使用P format specifier,但我认为不会将其格式化为0.473:

  

百分比(“P”)格式说明符将数字乘以100并将其转换为表示百分比的字符串。精度说明符表示所需的小数位数。如果省略精度说明符,则使用当前PercentDecimalDigits属性提供的默认数值精度。

因此,文化会影响小数位数,小数点分隔符以及数值的处理,但我不相信任何影响“值乘以100”的部分。