C#のstring.Formatで桁数や書式を指定する

stringクラスのFormatメソッドを使うと、指定した形式に基づいてオブジェクトの値を文字列に変換する事ができます。

基本的な使い方

string.Formatメソッドは、1番目の引数で指定した文字列に2番目以降の引数を値を埋め込む事ができます。埋め込む場所は {0} のようにカッコで囲み引数の番号を記述します。

txt = string.Format("値は{0}と{1}です。", 10, "ABC");
txt = string.Format("{{値}}は{0}です。", 10);
//文字列にカッコ{}を使いたい時は{{のように2回続けて書きます
値は10とABCです。
{値}は10です。

桁数を指定する

埋め込む値の桁数を指定する事ができます。

桁数はカッコの中の番号の後にカンマ , で区切って桁数を指定します。

プラスで桁数を指定すると右寄せ(左側をスペースで埋める)になり、

マイナスで桁数を指定すると左寄せ(右側をスペースで埋める)になります。

string.Format("値は{0,5}です。", 10);
string.Format("値は{0,-5}です。", "ABC");
値は   10です。
値はABC  です。

書式を指定する

書式指定子というものを指定して書式を指定する事が出来ます。

カッコの中の番号の後にコロン : で区切って書式を指定します。

指定方法の詳細は 標準の数値書式指定文字 サイトから確認できます。

"C"または"c"

通貨の書式です。

数値型のみサポートします。

OSの地域設定に従ってその国の通貨単位がつけられます。

小数点の桁数も通貨の単位によって変わります。(書式識別子の後に桁数を指定する事も可能)

第1引数にCultureInfoクラスを指定する事で、通貨単位を任意に変更できます。

string.Format("{0:C}",   10.123);
string.Format("{0:C}",  -10.123);
string.Format("{0:C2}", -10.123);
string.Format(new CultureInfo("en-US"), "{0:C}",  10.123);
string.Format(new CultureInfo("fr-FR"), "{0:C}", -10.123);
¥10
-¥10
-¥10.12
$10.12
-10,12 €

"D"または"d"

10進数型の書式です。

整数型のみサポートします。

書式識別子の後に桁数を指定する事も可能で先頭が0埋めされます。

string.Format("{0:D}",   10);
string.Format("{0:D}",  -10);
string.Format("{0:D5}",  10);
string.Format("{0:D5}", -10);
10
-10
00010
-00010

"E"または"e"

指数の書式です。

数値型のみサポートします。

小数点以下桁数のデフォルトは6ですが、書式識別子の後に桁数を指定する事も可能です。

string.Format("{0:E}",   10.1234567);
string.Format("{0:e}",  -10.1234567);
string.Format("{0:e2}",  10.1234567);
string.Format("{0:E2}", -10.1234567);
1.012346E+001
-1.012346e+001
1.01e+001
-1.01E+001

"F"または"f"

固定小数点の書式です。

数値型のみサポートします。

小数点以下桁数のデフォルトは2ですが、書式識別子の後に桁数を指定する事も可能です。

string.Format("{0:F}",   10.1234567);
string.Format("{0:f}",  -10.1234567);
string.Format("{0:f5}",  10.1234567);
string.Format("{0:F5}", -10.1234567);
10.12
-10.12
10.12346
-10.12346

"N"または"n"

数値の書式です。桁数が多い場合は桁区切り文字 "," が入ります。

数値型のみサポートします。

string.Format("{0:N}",   1000000);
string.Format("{0:n}",  -1000000.1);
string.Format("{0:n3}",  1000000.12345);
string.Format("{0:N3}", -1000000.12345);
1,000,000.00
-1,000,000.10
1,000,000.123
-1,000,000.123

"P"または"p"

パーセントの書式です。数値に100を掛けて表示します。

数値型のみサポートします。

string.Format("{0:P}",   0.1);
string.Format("{0:p}",  -0.15);
string.Format("{0:p3}",  0.12345);
string.Format("{0:P3}", -0.12345);
10.00%
-15.00%
12.345%
-12.345%

"X"または"x"

16進数の書式です。数値に100を掛けて表示します。

整数型のみサポートします。

string.Format("{0:X}",   10);
string.Format("{0:x}",  -10);
string.Format("{0:x4}",  255);
string.Format("{0:X4}", (short)-1);
string.Format("{0:X4}", (int)-1);
A
fffffff6
00ff
FFFF
FFFFFFFF