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)の部分は「?」にリプレースされます。