CultureInfo.InvariantCulture
.NETで出くわす話題、
http://d.hatena.ne.jp/ABA/20080223
のことについて、確認してみました。データの処理と自然言語の処理とで区別が必要ですね。
確認C#コード
using System; using System.Globalization; class Program { static void Main(string[] args) { CultureInfo invariant = CultureInfo.InvariantCulture; CultureInfo jaJP = new CultureInfo("ja-JP"); CultureInfo frFR = new CultureInfo("fr-FR"); CultureInfo enUS = new CultureInfo("en-US"); Print(invariant); Print(jaJP); Print(frFR); Print(enUS); } public static void Print(CultureInfo cultureInfo) { float value = 12345.6f; Console.WriteLine("{0}:", cultureInfo.NativeName); Console.WriteLine("NumberDecimalSeparator = \"{0}\" (U+{1:X4})", cultureInfo.NumberFormat.NumberDecimalSeparator, (ushort)cultureInfo.NumberFormat.NumberDecimalSeparator[0]); Console.WriteLine("NumberGroupSeparator = \"{0}\" (U+{1:X4})", cultureInfo.NumberFormat.NumberGroupSeparator, (ushort)cultureInfo.NumberFormat.NumberGroupSeparator[0]); Console.WriteLine(value.ToString("#,#.#", cultureInfo)); Console.WriteLine(); } }
結果(調整済み)
Invariant Language (Invariant Country): NumberDecimalSeparator = "." (U+002E) NumberGroupSeparator = "," (U+002C) 12,345.6 日本語 (日本): NumberDecimalSeparator = "." (U+002E) NumberGroupSeparator = "," (U+002C) 12,345.6 français (France): NumberDecimalSeparator = "," (U+002C) NumberGroupSeparator = " " (U+00A0) 12 345,6 English (United States): NumberDecimalSeparator = "." (U+002E) NumberGroupSeparator = "," (U+002C) 12,345.6
※実際のANSIのコンソールの実行結果では、U+00A0 (NO-BREAK SPACE)の部分は「?」にリプレースされます。