3

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

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

4

2 回答 2

7

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

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

它是基于文化控制格式的P格式字符串。

值得注意的是,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. 4,730.00%

这与为 English Culture 输出的内容相同en-GB

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

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

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

  1. %47.30
  2. %4,730.00
于 2013-02-26T09:34:06.333 回答
3

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

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

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

因此,文化会影响小数位数、小数点分隔符以及可能对数值的处理,但我认为不会影响“值乘以 100”部分。

于 2013-02-26T09:34:30.623 回答