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

Rav*_*pta 3 c# globalization

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

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

mat*_*mmo 7

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

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

它是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));
Run Code Online (Sandbox Code Playgroud)

将输出:

  1. 47.30%
  2. 4,730.00%

这与英国文化的输出相同en-GB.

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

Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
Run Code Online (Sandbox Code Playgroud)

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

  1. 47.30%
  2. %4,730.00