システムには、ユーザーが選択した地域設定に従って数値と通貨をフォーマットするコードがあります。ユーザーの 1 人が 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 の間で小数点記号と桁のグループ化が変更された理由は何ですか?
ウィキペディアによると、「南アフリカがメートル法を採用したとき、小数点記号としてコンマを採用しました。」これは、この設定がある時点で変更されたことを意味しますが、フレームワークのバージョンが異なると動作が異なる理由についてはまだわかりません。