1

アメリカとヨーロッパのスタイルで (double 型の) 数値をフォーマットできるようにしたいと考えています。ユーザーの選択に応じて、数値 123123123.456 は次のいずれかの形式にする必要があります。

  • 123,123,123.456 // アメリカ形式
  • 123.123.123,456 // ヨーロッパ形式

もう 1 つの要件は、小数点以下の桁数を設定できることです。私は使用double.ToString(string format, IFormatProvider provider)して置くことができると信じ"F2"ていますが、msdn は、自分で実装できることを説明することformatについてあまり語っていないようです。IFormatProvider

double x = 123123123.456
IFormatProvider myFormatProvider = whatToDo ?
x.ToString("F2", myFormatProvider); // I need 2 decimal digits hence F2

その目的で使用できる事前に作成された数の IFormatProvider オブジェクトはありますか? それとも、他の解決策があり、私は間違った方向に進んでいますか?

4

2 に答える 2

8
IFormatProvider myFormatProvider = new CultureInfo("en-us").NumberFormat;

また

IFormatProvider myFormatProvider = new CultureInfo("fr").NumberFormat;

(ここでは文化としてフランスを使用していますが、ほとんどすべてのヨーロッパの国である可能性があります)。

于 2012-10-24T13:05:17.987 に答える
1

IFormatProvider は CultureInfo にすることができます。

double x = 123123123.456
System.Globalization.CultureInfo EnglishCulture = new System.Globalization.CultureInfo("en-EN");
x.ToString("F2",EnglishCulture);

また

x.ToString("F2",EnglishCulture.NumberFormat);
于 2012-10-24T13:06:50.500 に答える