3

我们的系统中有代码可以根据用户选择的区域设置来格式化数字和货币。我们的一位用户选择了 en-ZA,并注意到随着我们迁移到 .NET 4.0,数字分组和小数分隔符发生了变化。

我写了一段代码来说明这种变化:

using System;
namespace regional
{
    class Program
    {
        static void Main(string[] args)
        {
            var ci = new System.Globalization.CultureInfo("en-ZA");
            var output = 1234567.00m.ToString("c", ci);
            Console.WriteLine(output);            
        }
    }
}

在 .NET 3.5 下,我们得到如下所示的输出:

R 1,234,567.00

在 .NET 4.0 下,我们得到如下所示的输出:

R 1 234 567,00

.NET 3.5 和 .NET 4.0 之间小数分隔符和数字分组发生变化的原因是什么?

根据维基百科,“当南非采用公制时,它采用逗号作为小数分隔符。” 这意味着此设置在某些时候发生了更改,但我仍然不了解为什么不同框架版本之间的行为不同。

4

1 回答 1

2

.net 团队根据消费者的反馈审查此类内容——大概有足够多的人请求他们说现有设置不正确,因此他们更改了这些设置。

http://msdn.microsoft.com/en-us/library/dd997383.aspx#updated_globalization_property_values

基本上说“我们更新版本之间的全球化设置”,并且

http://msdn.microsoft.com/en-us/library/dd997383.aspx#getting_current_globalization_information

表示从 Windows 7 开始,它们实际上从操作系统加载全球化数据(因此在不同的操作系统下,在不同的时间点,en-za 可能会出现不同的显示)。还

由于世界瞬息万变,全球化信息随时变化;开发人员不应期望全球化属性的值在不同版本之间保持不变,甚至对于 .NET Framework 的同一版本也不应保持不变

于 2010-07-24T07:38:44.413 回答