回答:
String.Format("{0:n}", 1234); // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
string.Format("{0:n0}", Double.Parse(yourValue));
これが最も簡単な方法であることがわかりました:
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
,
、スペースやさらには千の区切り文字以外の文字を使用してい.
ます。
.
)、. NETは自動的にコンマをその区切り文字に置き換えます。繰り返しますが、これがなぜなのかまだ理解できない場合は、Rogerが投稿したリンクを読むことをお勧めします。
関連する出力を備えた標準フォーマット
Console.WriteLine("Standard Numeric Format Specifiers");
String s = String.Format("(C) Currency: . . . . . . . . {0:C}\n" +
"(D) Decimal:. . . . . . . . . {0:D}\n" +
"(E) Scientific: . . . . . . . {1:E}\n" +
"(F) Fixed point:. . . . . . . {1:F}\n" +
"(G) General:. . . . . . . . . {0:G}\n" +
" (default):. . . . . . . . {0} (default = 'G')\n" +
"(N) Number: . . . . . . . . . {0:N}\n" +
"(P) Percent:. . . . . . . . . {1:P}\n" +
"(R) Round-trip: . . . . . . . {1:R}\n" +
"(X) Hexadecimal:. . . . . . . {0:X}\n",
- 1234, -1234.565F);
Console.WriteLine(s);
出力例(en-usカルチャ):
(C) Currency: . . . . . . . . ($1,234.00)
(D) Decimal:. . . . . . . . . -1234
(E) Scientific: . . . . . . . -1.234565E+003
(F) Fixed point:. . . . . . . -1234.57
(G) General:. . . . . . . . . -1234
(default):. . . . . . . . -1234 (default = 'G')
(N) Number: . . . . . . . . . -1,234.00
(P) Percent:. . . . . . . . . -123,456.50 %
(R) Round-trip: . . . . . . . -1234.565
(X) Hexadecimal:. . . . . . . FFFFFB2E
これが最適な形式です。これらのすべてのケースで機能します。
String.Format( "{0:#,##0.##}", 0 ); // 0
String.Format( "{0:#,##0.##}", 0.5 ); // 0.5 - some of the formats above fail here.
String.Format( "{0:#,##0.##}", 12314 ); // 12,314
String.Format( "{0:#,##0.##}", 12314.23123 ); // 12,314.23
String.Format( "{0:#,##0.##}", 12314.2 ); // 12,314.2
String.Format( "{0:#,##0.##}", 1231412314.2 ); // 1,231,412,314.2
String.Format("{0:#,###,###.##}", MyNumber)
これにより、関連するポイントにコンマが表示されます。
最も投票された回答は素晴らしく、約7年間役に立ちました。C#6.0、特に文字列補間の導入により、きちんとした、そしてIMOより安全な、求められていることを実行する方法がありますto add commas in thousands place for a number
。
var i = 5222000;
var s = $"{i:n} is the number"; // results to > 5,222,000.00 is the number
s = $"{i:n0} has no decimal"; // results to > 5,222,000 has no decimal
変数i
がプレースホルダー(つまり{0}
)の代わりに配置される場所。したがって、どのオブジェクトがどの位置に移動するかを覚えておく必要はありません。フォーマット(つまり:n
)は変更されていません。新機能の完全な機能については、このページにアクセスしてください。
次の例は、ゼロのプレースホルダーを含むカスタム形式の文字列を使用してフォーマットされたいくつかの値を表示します。
String.Format("{0:N1}", 29255.0);
または
29255.0.ToString("N1")
結果「29,255.0」
String.Format("{0:N2}", 29255.0);
または
29255.0.ToString("N2")
結果 "29,255.00"
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
書式設定する値は数値でなければならないことに注意してください。数値の文字列表現を取得するようには見えません。形式はカンマです。
String.Format("0,###.###"); also works with decimal places
C#7.1(おそらく以前のバージョンですか?)
var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";
このような関数を使用して数値をフォーマットし、必要に応じて小数点以下の桁数を渡すことができます。小数点以下の桁数を指定しない場合、小数点以下2桁が使用されます。
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
私は10進数を使用していますが、タイプを他のタイプに変更したり、匿名オブジェクトを使用したりできます。負の小数点以下の値のエラーチェックを追加することもできます。
カルチャーや潜在的なフォーマットの問題についてもう心配する必要がなかった方法は、それを通貨としてフォーマットし、後で通貨記号を取り出したことです。
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
fr-FR
、または通貨を示すために複数の文字を使用する(例:)da-DK
、またはカンマを使用して数千を区切らない(例:ほとんどの)ヨーロッパ本土の)。
以下はJavaでの良い解決策です!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
または、より堅牢な方法で特定の場所のロケールを取得したい場合は、次のように使用します。
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
米国ロケール出力:$ 9,999,999.00
ドイツ語ロケールの出力
Locale locale = new Locale("de", "DE");
出力:9.999.999,00€
インドのロケール出力
Locale locale = new Locale("de", "DE");
出力:Rs.9,999,999.00
エストニア語ロケールの出力
Locale locale = new Locale("et", "EE");
出力:9 999 999€
別の出力で見ることができるように、セパレーターがコンマやドット、またはスペースであることを心配する必要はありません。i18n標準に従ってフォーマットされた数値を取得できます。
locale
か?
String.Format("{0:#,##0}", 1234);
また、小数点以下なしでも機能します。