949

数字の千の位にコンマを追加したい。

String.Format()取るべき正しい道でしょうか?どの形式を使用しますか?

4

22 に答える 22

1392
String.Format("{0:n}", 1234);  // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
于 2008-09-19T21:29:06.970 に答える
427

これが最も簡単な方法であることがわかりました:

myInteger.ToString("N0")
于 2010-10-19T05:04:38.857 に答える
158
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
于 2008-11-17T15:15:07.727 に答える
111

文化固有のものが必要な場合は、これを試してみてください。

(19950000.0).ToString("N",new CultureInfo("en-US"))= 19,950,000.00

(19950000.0).ToString("N",new CultureInfo("is-IS"))= 19.950.000,00

注:一部のカルチャでは、注意するの,ではなく、小数を意味するために使用し.ます。

于 2010-10-26T09:22:58.720 に答える
89

標準フォーマットとそれに関連する出力、

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
于 2013-03-01T23:44:34.140 に答える
52

これが最適な形式です。これらすべてのケースで機能します:

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
于 2015-07-09T23:43:49.617 に答える
44

最も投票された回答は素晴らしく、約 7 年間役に立ちました。C# 6.0 の導入と、具体的には String Interpolation により、求められていることを実行するための、よりきちんとした、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) は変更されていません。新機能の完全な機能については、このページにアクセスしてください

于 2015-08-12T02:51:49.590 に答える
33
String.Format("{0:#,###,###.##}", MyNumber)

これにより、関連するポイントにコンマが表示されます。

于 2008-09-19T21:29:07.907 に答える
21

カルチャに関係なく "," セパレーターを強制したい場合 (たとえば、トレースまたはログ メッセージで)、次のコードが機能し、次に遭遇した人にあなたが何をしているのかを正確に伝えるという追加の利点があります。

int integerValue = 19400320; 
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);

「19,400,320」にフォーマットされたセット

于 2013-03-27T19:55:29.937 に答える
13

String.Format の代わりに文字列補間を使用して、よりシンプルに

 $"{12456:n0}"; // 12,456
 $"{12456:n2}"; // 12,456.00

または yourVariable を使用して

 double yourVariable = 12456.0;
 $"{yourVariable:n0}"; 
 $"{yourVariable:n2}"; 
于 2016-11-02T20:22:05.510 に答える
11
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
于 2010-05-20T15:36:29.930 に答える
11

たとえば、String.Format("{0:0,0}", 1);01を返します。私にとっては無効です

これは私のために働く

19950000.ToString("#,#", CultureInfo.InvariantCulture));

出力 19,950,000

于 2012-10-23T21:19:57.040 に答える
9

フォーマットする値は数値である必要があることに注意してください。数値の文字列表現を使用するようには見えず、形式はコンマを使用します。

于 2008-10-12T00:35:09.300 に答える
3

このような関数を使用して数値をフォーマットし、必要に応じて小数点以下の桁数を渡すことができます。小数点以下の桁数が指定されていない場合は、小数点以下 2 桁が使用されます。

    public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
    {
        return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
    }

私は decimal を使用しますが、タイプを他のものに変更したり、匿名オブジェクトを使用したりできます。負の小数点以下の値のエラー チェックを追加することもできます。

于 2014-12-23T11:13:38.250 に答える
-3

DataGridview に表示する場合は、そのタイプを変更する必要があります。デフォルトは String であり、10 進数に変更すると浮動小数点数と見なされるためです。

Dim dt As DataTable = New DataTable
dt.Columns.Add("col1", GetType(Decimal))
dt.Rows.Add(1)
dt.Rows.Add(10)
dt.Rows.Add(2)

DataGridView1.DataSource = dt
于 2013-11-28T03:36:47.573 に答える
-4

文化や潜在的な書式設定の問題について心配する必要がなくなった方法は、通貨として書式設定し、後で通貨記号を削除することでした。

if (decimal.TryParse(tblCell, out result))

{
  formattedValue = result.ToString("C").Substring(1);
}
于 2012-06-13T09:55:01.233 に答える