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

本文关键字:数据格式 百分比 全球化 | 更新日期: 2023-09-27 18:01:15

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

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

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

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

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. 4730.00%

这与将为英语文化CCD_ 5输出的内容相同。

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

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

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

  1. %47.30
  2. %4730.00

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

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

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

因此,区域性会影响十进制数字的数量、十进制分隔符,可能还会影响数值的处理,但我不认为任何事情会影响"值乘以100"部分。