これはグローバル化に共通の問題です。定義する必要があるのは、データ自体を格納する単一のカルチャです。これは、データを文字列値として格納しているためです。次に、そのカルチャを使用してすべてのデータ入力と処理を行います。私たちのコードには、多文化の数学とデータ表示を処理するために、これに似たいくつかのブロックがあります。
//save current culture and set to english
CultureInfo current = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
//Do Math and Data things
//restore original culture
System.Threading.Thread.CurrentThread.CurrentCulture = current;
このようにして、データの生成または表示に使用されているカルチャに関係なく、すべてのデータが同じ方法で処理および保存されるようにすることができます。
編集
データを保存して数値を文字列に変換するには、まったく同じ方法で行います。現在のスレッドの CultureInfo 設定を "en-US" に設定している間.ToString()
、すべての番号のメソッドは "." を使用します。小数点の「、」の代わりに。もう 1 つの方法は、.ToString() を呼び出すときにフォーマット プロバイダーを指定することです。
decimalNumber.ToString(new CultureInfo("en-US"));
これは、数値を文字列に変換するときに、提供されたカルチャの NumberFormat を使用することを指定します。