2

コードに次のような行があります。

string buffer = string.Format(CultureInfo.InvariantCulture, "{0:N4}", 1008.0);

この行を実行した後、なぜbuffercontain 1,008.0(コンマに注意)があるのですか?

はい、それは私の地域の設定が原因だと思います。問題は、この場合、なぜそれらが結果に影響を与えるのかということです。

編集:

わかりました、それは完全に私のせいです。Fフォーマット指定子を使うべきだったようです。

4

3 に答える 3

4

InvariantCulture大まかに基づいて、千(グループ)区切り文字としてen-US使用されます。,

あなたの結果は私が期待するものです。

Nまた、数値形式指定子の詳細についても説明します。

数値( "N")形式指定子は、数値を "-d、ddd、ddd.ddd…"の形式の文字列に変換します。ここで、 "-"は必要に応じて負の数記号を示し、 "d"は数字(0 -9)、「、」はグループ区切り記号、「。」はグループ区切り記号を示します。小数点記号を示します。

于 2012-05-10T17:30:17.917 に答える
2

あなたは不変の文化を使用しています; あなたの文化はこれとは無関係です。このため、N4フォーマットは

-d,ddd,ddd,ddd...

つまり、数千のグループ間で先行する負の符号インジケーターとコンマの可能性があります。詳細については、http://msdn.microsoft.com/en-us/library/dwhawy9k#NFormatStringを参照してください。

あなたは見ることができます

NegativeSign
NumberNegativePattern
NumberGroupSizes
NumberGroupSeparator
NumberDecimalSeparator
NumberDecimalDigits

不変の文化のために。そうした場合、次のように表示されます。

-
1
{ 3 }
,
.
2
于 2012-05-10T17:32:07.480 に答える
1

「{0:N4}」が原因でカンマが表示されます

n-----数千のコンマ付きの数値-----{0:n}
出典:

InvariantCultureを指定しなくてもコンマが表示されます

Console.WriteLine(string.Format("{0:n4}", 1008.0));
于 2012-05-10T17:32:45.857 に答える