C# ToStringで桁数を指定する方法|ゼロ埋め・小数点・書式指定をわかりやすく解説
はじめに
C#で数値を画面に表示したり、IDや管理番号として出力したりするときに、「桁数をそろえたい」「ゼロ埋めしたい」「小数点以下を2桁にしたい」といった場面はよくあります。
たとえば、次のような表示です。
C#1 → 00001
25 → 00025
123 → 00123
また、金額や計算結果を表示するときは、次のように小数点以下の桁数を固定したいこともあります。
C#1234.5 → 1234.50
C#では、ToStringメソッドに書式指定文字列を渡すことで、数値の表示形式や桁数を簡単に指定できます。
この記事では、C#のToStringで桁数を指定する方法について、整数のゼロ埋め、小数点以下の桁数指定、カンマ区切り、カスタム書式、文字列の表示幅調整まで、初心者にもわかりやすく解説します。
1. C#のToStringで桁数を指定する基本
C#で桁数を指定して表示したい場合、まず理解しておきたいのがToStringメソッドです。
ToStringは、数値や日付などの値を文字列に変換するためのメソッドです。数値に対して使う場合は、書式指定文字列を渡すことで、桁数や小数点以下の表示、カンマ区切りなどを細かく指定できます。
1-1. ToStringとは?数値や文字列を指定した形式に変換するメソッド
ToStringは、オブジェクトを文字列として表現するためのメソッドです。
数値に対して使うと、数値を文字列に変換できます。
C#int number = 123;
string text = number.ToString();
Console.WriteLine(text);
実行結果は次のとおりです。
C#123
この例では、数値の123を文字列の"123"に変換しています。
さらに、ToStringには書式指定文字列を渡すことができます。
C#int number = 123;
string text = number.ToString("D5");
Console.WriteLine(text);
実行結果は次のようになります。
C#00123
"D5"を指定することで、整数を5桁で表示し、不足している桁を左側に0で埋めています。
1-2. 「桁数を指定する」とは何をしたいケースなのか
C#で「桁数を指定する」といっても、目的はいくつかあります。
代表的なケースは次のようなものです。
C#// 整数をゼロ埋めしたい
1 → 00001
// 小数点以下の桁数を固定したい
12.3 → 12.30
// カンマ区切りで見やすくしたい
1234567 → 1,234,567
// 表形式で表示幅をそろえたい
ID Name
0001 Apple
0002 Orange
同じ「桁数指定」でも、整数の桁数をそろえるのか、小数点以下の桁数をそろえるのか、表示幅をそろえるのかによって使う方法が変わります。
1-3. 整数・小数・文字列で使う書式指定が異なる
C#のToStringでは、対象となる値の型によって使える書式指定が異なります。
整数のゼロ埋めには、主にDを使います。
C#int number = 42;
Console.WriteLine(number.ToString("D5"));
実行結果は次のとおりです。
C#00042
小数点以下の桁数を指定するには、主にFを使います。
C#double value = 12.3;
Console.WriteLine(value.ToString("F2"));
実行結果は次のとおりです。
C#12.30
カンマ区切りと小数点以下の桁数を指定するには、Nを使います。
C#double price = 1234567.8;
Console.WriteLine(price.ToString("N2"));
実行結果は、日本語環境では次のようになります。
C#1,234,567.80
一方で、文字列そのものの長さや表示幅をそろえたい場合は、ToStringではなく、PadLeft、PadRight、string.Format、文字列補間などを使うのが一般的です。
1-4. 標準数値書式指定文字列とカスタム数値書式指定文字列の違い
C#の数値書式には、大きく分けて次の2種類があります。
1つ目は、標準数値書式指定文字列です。
C#int number = 123;
Console.WriteLine(number.ToString("D5"));
Console.WriteLine(number.ToString("N0"));
D、F、Nなどの決まった書式を使う方法です。
2つ目は、カスタム数値書式指定文字列です。
C#int number = 123;
Console.WriteLine(number.ToString("00000"));
実行結果は次のとおりです。
C#00123
0や#などの記号を組み合わせて、自分で表示形式を作る方法です。
標準書式はシンプルに書けるのがメリットです。カスタム書式は、より細かい表示制御ができるのがメリットです。
2. 整数の桁数を指定してゼロ埋めする方法
整数の桁数をそろえてゼロ埋めしたい場合は、ToString("D桁数")を使います。
たとえば、5桁で表示したい場合は"D5"、3桁で表示したい場合は"D3"を指定します。
2-1. ToString("D桁数")で整数を指定桁数にそろえる
Dは、Decimalの略で、整数を10進数形式で表示するための標準数値書式指定文字列です。
C#int number = 7;
Console.WriteLine(number.ToString("D3"));
実行結果は次のとおりです。
C#007
"D3"は「最低3桁で表示する」という意味です。
数値の桁数が指定した桁数より少ない場合、不足分が左側に0で埋められます。
2-2. ToString("D5")で5桁のゼロ埋めをする例
5桁のゼロ埋めをする場合は、次のように書きます。
C#int number1 = 1;
int number2 = 25;
int number3 = 123;
Console.WriteLine(number1.ToString("D5"));
Console.WriteLine(number2.ToString("D5"));
Console.WriteLine(number3.ToString("D5"));
実行結果は次のとおりです。
C#00001
00025
00123
連番やIDを固定桁で表示したい場合によく使います。
C#for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i.ToString("D4"));
}
実行結果は次のようになります。
C#0001
0002
0003
0004
0005
2-3. 指定桁数より数値の桁数が多い場合の挙動
ToString("D5")は、必ず5桁に切り詰めるという意味ではありません。
指定した桁数よりも元の数値の桁数が多い場合は、そのまま表示されます。
C#int number = 123456;
Console.WriteLine(number.ToString("D5"));
実行結果は次のとおりです。
C#123456
"D5"は「最低5桁で表示する」という意味です。そのため、6桁の数値が5桁に短くなることはありません。
2-4. 負の数をゼロ埋めしたときの表示結果
負の数に対してD指定を使うと、マイナス記号が先頭に付き、その後ろの数値部分がゼロ埋めされます。
C#int number = -42;
Console.WriteLine(number.ToString("D5"));
実行結果は次のとおりです。
C#-00042
この場合、-を除いた数値部分が5桁になるようにゼロ埋めされます。
2-5. 連番・ID・コード番号でよく使うゼロ埋め例
ゼロ埋めは、管理番号や商品コード、注文番号などでよく使われます。
C#int id = 123;
string userId = "USER-" + id.ToString("D6");
Console.WriteLine(userId);
実行結果は次のとおりです。
C#USER-000123
文字列補間を使うと、より読みやすく書けます。
C#int id = 123;
string userId = $"USER-{id:D6}";
Console.WriteLine(userId);
実行結果は同じです。
C#USER-000123
ToString("D6")と$"{id:D6}"は、どちらも整数を6桁でゼロ埋めする書き方です。
3. 小数点以下の桁数を指定する方法
小数点以下の桁数を指定したい場合は、ToString("F桁数")を使います。
Fは固定小数点形式を表します。
たとえば、小数点以下2桁まで表示したい場合は"F2"を指定します。
3-1. ToString("F桁数")で小数点以下の桁数を固定する
F指定を使うと、小数点以下の桁数を固定できます。
C#double value = 12.3;
Console.WriteLine(value.ToString("F2"));
実行結果は次のとおりです。
C#12.30
元の値が12.3でも、"F2"を指定すると小数点以下2桁で表示されるため、12.30になります。
3-2. ToString("F2")で小数第2位まで表示する例
小数点以下2桁で表示する例を見てみましょう。
C#double value1 = 1.2;
double value2 = 1.234;
double value3 = 1.0;
Console.WriteLine(value1.ToString("F2"));
Console.WriteLine(value2.ToString("F2"));
Console.WriteLine(value3.ToString("F2"));
実行結果は次のようになります。
C#1.20
1.23
1.00
"F2"は、小数点以下を2桁に固定します。
小数点以下が足りない場合は0が追加され、多い場合は丸められます。
3-3. 小数点以下の桁数を指定したときの四捨五入
ToString("F2")のように小数点以下の桁数を指定した場合、表示される文字列は指定桁数に合わせて丸められます。
C#double value = 1.236;
Console.WriteLine(value.ToString("F2"));
実行結果は次のとおりです。
C#1.24
小数第3位の6によって、小数第2位が繰り上がっています。
ただし、これは表示用の文字列が丸められているだけで、元の数値そのものが変更されるわけではありません。
C#double value = 1.236;
string text = value.ToString("F2");
Console.WriteLine(text);
Console.WriteLine(value);
実行結果は次のようになります。
C#1.24
1.236
textは"1.24"ですが、value自体は1.236のままです。
3-4. 小数点以下を表示しないToString("F0")の使い方
小数点以下を表示したくない場合は、"F0"を指定します。
C#double value = 123.45;
Console.WriteLine(value.ToString("F0"));
実行結果は次のとおりです。
C#123
ただし、"F0"も表示上は丸められます。
C#double value = 123.56;
Console.WriteLine(value.ToString("F0"));
実行結果は次のようになります。
C#124
小数点以下を単純に切り捨てたい場合は、ToString("F0")だけではなく、Math.Truncateなどを使ってから表示します。
C#double value = 123.56;
Console.WriteLine(Math.Truncate(value).ToString("F0"));
実行結果は次のとおりです。
C#123
3-5. double・float・decimalでの表示例
F指定は、double、float、decimalなどの小数型で使えます。
C#double doubleValue = 12.3456;
float floatValue = 12.3456f;
decimal decimalValue = 12.3456m;
Console.WriteLine(doubleValue.ToString("F2"));
Console.WriteLine(floatValue.ToString("F2"));
Console.WriteLine(decimalValue.ToString("F2"));
実行結果は次のようになります。
C#12.35
12.35
12.35
金額のように誤差を避けたい計算では、decimalがよく使われます。
C#decimal price = 1234.5m;
Console.WriteLine(price.ToString("F2"));
実行結果は次のとおりです。
C#1234.50
4. カンマ区切りや小数桁数を指定する方法
数値を見やすく表示したい場合は、カンマ区切りが便利です。
C#では、ToString("N桁数")を使うと、3桁区切りと小数点以下の桁数を同時に指定できます。
4-1. ToString("N桁数")でカンマ区切りと小数桁数を指定する
Nは数値形式を表す標準数値書式指定文字列です。
C#double value = 1234567.89;
Console.WriteLine(value.ToString("N2"));
日本語環境では、実行結果は次のようになります。
C#1,234,567.89
"N2"は、カンマ区切りを付け、小数点以下2桁で表示する指定です。
4-2. ToString("N0")で整数を3桁区切りにする例
小数点以下を表示せず、整数部分だけをカンマ区切りにしたい場合は、"N0"を使います。
C#int number = 1234567;
Console.WriteLine(number.ToString("N0"));
日本語環境では、実行結果は次のとおりです。
C#1,234,567
桁数の大きい数値を表示するときに、読みやすくなります。
4-3. ToString("N2")で金額や数量を見やすく表示する例
金額や数量を表示するときは、"N2"がよく使われます。
C#decimal price = 1234567.8m;
Console.WriteLine(price.ToString("N2"));
実行結果は次のとおりです。
C#1,234,567.80
小数点以下2桁まで固定されるため、金額表示や集計結果の表示に向いています。
文字列補間でも同じように書けます。
C#decimal price = 1234567.8m;
Console.WriteLine($"合計金額: {price:N2}円");
実行結果は次のとおりです。
C#合計金額: 1,234,567.80円
4-4. カンマ区切りが不要な場合はFを使う
カンマ区切りが不要で、小数点以下の桁数だけを指定したい場合はFを使います。
C#double value = 1234567.8;
Console.WriteLine(value.ToString("F2"));
Console.WriteLine(value.ToString("N2"));
実行結果は次のようになります。
C#1234567.80
1,234,567.80
F2はカンマ区切りなし、N2はカンマ区切りありです。
4-5. 文化圏によってカンマや小数点の表示が変わる点に注意
ToString("N2")の表示は、実行環境の文化圏によって変わることがあります。
日本語や英語環境では、一般的に次のように表示されます。
C#1,234.56
一方、文化圏によっては、小数点や桁区切り記号が異なる場合があります。
特定の形式で固定したい場合は、CultureInfoを指定します。
C#using System.Globalization;
double value = 1234.56;
Console.WriteLine(value.ToString("N2", CultureInfo.InvariantCulture));
Console.WriteLine(value.ToString("N2", new CultureInfo("ja-JP")));
実行結果の例は次のとおりです。
C#1,234.56
1,234.56
海外向けのシステムやCSV出力などでは、文化圏による表示差に注意しましょう。
5. カスタム書式で桁数を細かく指定する方法
D、F、Nなどの標準書式だけでなく、0や#を使ったカスタム書式でも桁数を指定できます。
カスタム書式を使うと、整数部と小数部の桁数、カンマ区切り、必要な桁だけの表示などを細かく制御できます。
5-1. ToString("0000")で任意の桁数にゼロ埋めする
整数を任意の桁数でゼロ埋めしたい場合、"0000"のようなカスタム書式を使えます。
C#int number = 25;
Console.WriteLine(number.ToString("0000"));
実行結果は次のとおりです。
C#0025
0の数が、最低限表示したい桁数になります。
C#int number = 7;
Console.WriteLine(number.ToString("000"));
Console.WriteLine(number.ToString("00000"));
実行結果は次のようになります。
C#007
00007
5-2. 0と#の違いを理解する
カスタム書式でよく使う記号に、0と#があります。
0は、該当する桁がない場合でも0を表示します。
C#int number = 25;
Console.WriteLine(number.ToString("0000"));
実行結果は次のとおりです。
C#0025
一方、#は、該当する桁がない場合は何も表示しません。
C#int number = 25;
Console.WriteLine(number.ToString("####"));
実行結果は次のとおりです。
C#25
つまり、桁を必ず表示したい場合は0、必要な桁だけ表示したい場合は#を使います。
5-3. ToString("000.00")で整数部と小数部の桁数を指定する
整数部と小数部の両方を指定したい場合は、次のように書けます。
C#double value = 12.3;
Console.WriteLine(value.ToString("000.00"));
実行結果は次のとおりです。
C#012.30
この書式では、整数部を最低3桁、小数部を2桁で表示しています。
C#double value1 = 1.2;
double value2 = 123.456;
double value3 = 1234.5;
Console.WriteLine(value1.ToString("000.00"));
Console.WriteLine(value2.ToString("000.00"));
Console.WriteLine(value3.ToString("000.00"));
実行結果は次のようになります。
C#001.20
123.46
1234.50
指定した整数部より桁数が多い場合は、そのまま表示されます。
5-4. ToString("#,0")でカンマ区切りを指定する
カスタム書式でもカンマ区切りを指定できます。
C#int number = 1234567;
Console.WriteLine(number.ToString("#,0"));
実行結果は次のとおりです。
C#1,234,567
"#,0"は、必要な桁だけ表示しつつ、3桁区切りのカンマを付ける書式です。
小数点以下2桁も表示したい場合は、次のように書きます。
C#double value = 1234567.8;
Console.WriteLine(value.ToString("#,0.00"));
実行結果は次のとおりです。
C#1,234,567.80
5-5. 必要な桁だけ表示したい場合のカスタム書式
小数点以下を必要な分だけ表示したい場合は、#を使います。
C#double value1 = 12.3;
double value2 = 12.345;
double value3 = 12.0;
Console.WriteLine(value1.ToString("0.##"));
Console.WriteLine(value2.ToString("0.##"));
Console.WriteLine(value3.ToString("0.##"));
実行結果は次のようになります。
C#12.3
12.35
12
"0.##"は、小数点以下を最大2桁まで表示する書式です。
小数点以下が不要な場合は表示されません。固定で2桁表示したい場合は"0.00"を使います。
C#double value = 12.3;
Console.WriteLine(value.ToString("0.##"));
Console.WriteLine(value.ToString("0.00"));
実行結果は次のとおりです。
C#12.3
12.30
6. ToStringで文字列の桁数・表示幅をそろえる方法
数値の桁数指定と、文字列の表示幅をそろえることは別の考え方です。
数値を0001のようにゼロ埋めする場合はToString("D4")やToString("0000")を使います。
一方、すでに文字列になっている値の長さをそろえたい場合は、PadLeftやPadRightを使います。
6-1. 数値の桁数指定と文字列の桁数指定は別物
次の例を見てください。
C#int number = 12;
Console.WriteLine(number.ToString("D5"));
実行結果は次のとおりです。
C#00012
これは数値に対する書式指定です。
一方、次のように文字列をゼロ埋めする場合は、PadLeftを使います。
C#string text = "12";
Console.WriteLine(text.PadLeft(5, '0'));
実行結果は同じです。
C#00012
数値にはToStringの書式指定、文字列にはPadLeftやPadRightを使うと覚えておくとわかりやすいです。
6-2. PadLeftで左側をゼロ埋め・空白埋めする
PadLeftは、文字列の左側に指定した文字を追加して、指定した長さにそろえるメソッドです。
C#string code = "123";
Console.WriteLine(code.PadLeft(6, '0'));
実行結果は次のとおりです。
C#000123
空白で埋める場合は、埋める文字を省略できます。
C#string name = "Cat";
Console.WriteLine(name.PadLeft(6));
実行結果は次のようになります。
C#Cat
文字列の右寄せ表示をしたい場合に便利です。
6-3. PadRightで右側に文字を埋める
PadRightは、文字列の右側に指定した文字を追加して、指定した長さにそろえるメソッドです。
C#string name = "Cat";
Console.WriteLine(name.PadRight(6, '.'));
実行結果は次のとおりです。
C#Cat...
空白で埋める場合は、次のように書きます。
C#string name = "Cat";
Console.WriteLine(name.PadRight(6));
実行結果は次のようになります。
C#Cat
PadRightは、表形式の左寄せ表示などでよく使います。
6-4. string.Formatや文字列補間で表示幅を指定する
表示幅をそろえたい場合は、string.Formatや文字列補間でも指定できます。
C#int id = 1;
string name = "Apple";
Console.WriteLine(string.Format("{0,5} {1,-10}", id, name));
実行結果は次のようになります。
C#1 Apple
{0,5}は、1つ目の値を幅5で右寄せします。
{1,-10}は、2つ目の値を幅10で左寄せします。
文字列補間でも同じように書けます。
C#int id = 1;
string name = "Apple";
Console.WriteLine($"{id,5} {name,-10}");
実行結果は同じです。
C#1 Apple
さらに、書式指定と表示幅指定を組み合わせることもできます。
C#int id = 1;
decimal price = 1200m;
Console.WriteLine($"{id:D4} {price,10:N0}");
実行結果は次のようになります。
C#0001 1,200
6-5. 表形式の出力で桁位置をそろえる例
コンソールに表形式で出力する場合、表示幅をそろえると見やすくなります。
C#int id1 = 1;
int id2 = 23;
int id3 = 456;
string name1 = "Apple";
string name2 = "Orange";
string name3 = "Banana";
decimal price1 = 120m;
decimal price2 = 2500m;
decimal price3 = 30000m;
Console.WriteLine($"{"ID",-6} {"Name",-10} {"Price",10}");
Console.WriteLine($"{id1:D4} {name1,-10} {price1,10:N0}");
Console.WriteLine($"{id2:D4} {name2,-10} {price2,10:N0}");
Console.WriteLine($"{id3:D4} {name3,-10} {price3,10:N0}");
実行結果は次のようになります。
C#ID Name Price
0001 Apple 120
0023 Orange 2,500
0456 Banana 30,000
IDはD4でゼロ埋めし、Nameは左寄せ、Priceは右寄せで表示しています。
7. ToStringの桁数指定でよくある間違い
ToStringの桁数指定は便利ですが、書式指定を間違えるとエラーになったり、期待と違う結果になったりします。
ここでは、よくある間違いを確認しておきましょう。
7-1. ToString("D")は整数型で使う
D指定は整数型で使う書式です。
C#int number = 123;
Console.WriteLine(number.ToString("D5"));
実行結果は次のとおりです。
C#00123
int、long、shortなどの整数型で使えます。
C#long number = 12345L;
Console.WriteLine(number.ToString("D8"));
実行結果は次のとおりです。
C#00012345
7-2. 小数にD指定を使うとエラーになるケース
doubleやdecimalなどの小数型に"D5"を指定すると、書式が合わないためエラーになることがあります。
C#double value = 12.34;
Console.WriteLine(value.ToString("D5"));
このような書き方は、小数型には適していません。
小数点以下の桁数を指定したい場合は、FやNを使います。
C#double value = 12.34;
Console.WriteLine(value.ToString("F2"));
実行結果は次のとおりです。
C#12.34
7-3. F指定やN指定では小数が丸められる
FやNで小数点以下の桁数を指定すると、表示結果は丸められます。
C#double value = 1.999;
Console.WriteLine(value.ToString("F2"));
Console.WriteLine(value.ToString("N2"));
実行結果は次のようになります。
C#2.00
2.00
F2やN2は、小数点以下2桁で表示するため、小数第3位以降は表示上丸められます。
切り捨てをしたい場合は、Math.Truncateなどを使ってから表示しましょう。
C#double value = 1.999;
double truncated = Math.Truncate(value * 100) / 100;
Console.WriteLine(truncated.ToString("F2"));
実行結果は次のとおりです。
C#1.99
7-4. ゼロ埋めした結果は数値ではなく文字列になる
ToStringの戻り値は文字列です。
C#int number = 123;
string text = number.ToString("D5");
Console.WriteLine(text);
実行結果は次のとおりです。
C#00123
textは数値ではなく文字列です。
そのため、ゼロ埋めした値を計算に使うことはできません。
C#int number = 123;
string text = number.ToString("D5");
// text + 1 は数値計算ではなく、文字列として扱われる
Console.WriteLine(text + 1);
実行結果は次のようになります。
C#001231
計算したい場合は、元の数値を使い、表示するときだけToStringで整形するのが基本です。
7-5. 桁数をそろえても元の数値は変わらない
ToStringで桁数を指定しても、元の数値は変わりません。
C#int number = 123;
string text = number.ToString("D5");
Console.WriteLine(text);
Console.WriteLine(number);
実行結果は次のとおりです。
C#00123
123
ToString("D5")は、表示用の文字列を作っているだけです。
数値そのものを変更しているわけではないため、データベースに保存する値や計算に使う値とは分けて考えましょう。
8. 用途別:C# ToStringの桁数指定早見表
ここでは、よく使うToStringの桁数指定を用途別にまとめます。
8-1. 整数を5桁でゼロ埋めしたい場合
整数を5桁でゼロ埋めしたい場合は、D5を使います。
C#int number = 123;
Console.WriteLine(number.ToString("D5"));
実行結果は次のとおりです。
C#00123
文字列補間では、次のように書けます。
C#int number = 123;
Console.WriteLine($"{number:D5}");
実行結果は同じです。
C#00123
8-2. 小数点以下2桁まで表示したい場合
小数点以下2桁まで表示したい場合は、F2を使います。
C#double value = 12.3;
Console.WriteLine(value.ToString("F2"));
実行結果は次のとおりです。
C#12.30
小数点以下が足りない場合は0で補われ、多い場合は丸められます。
8-3. カンマ区切りで表示したい場合
カンマ区切りで表示したい場合は、Nを使います。
C#int number = 1234567;
Console.WriteLine(number.ToString("N0"));
実行結果は次のとおりです。
C#1,234,567
小数点以下2桁も表示したい場合は、N2を使います。
C#double value = 1234567.8;
Console.WriteLine(value.ToString("N2"));
実行結果は次のとおりです。
C#1,234,567.80
8-4. IDや管理番号を固定桁で表示したい場合
IDや管理番号を固定桁で表示したい場合は、D指定が便利です。
C#int orderId = 45;
string code = $"ORDER-{orderId:D6}";
Console.WriteLine(code);
実行結果は次のとおりです。
C#ORDER-000045
カスタム書式でも同じように書けます。
C#int orderId = 45;
string code = "ORDER-" + orderId.ToString("000000");
Console.WriteLine(code);
実行結果は同じです。
C#ORDER-000045
8-5. 表示幅をそろえてコンソール出力したい場合
コンソール出力で表示幅をそろえたい場合は、文字列補間の配置指定を使います。
C#int id = 12;
string name = "Apple";
decimal price = 1200m;
Console.WriteLine($"{id,5} {name,-10} {price,10:N0}");
実行結果は次のようになります。
C#12 Apple 1,200
ゼロ埋めと表示幅指定を組み合わせることもできます。
C#int id = 12;
decimal price = 1200m;
Console.WriteLine($"{id:D5} {price,10:N0}");
実行結果は次のとおりです。
C#00012 1,200
9. C# ToStringの桁数指定に関するFAQ
ここでは、C#のToStringで桁数を指定するときによくある質問に答えます。
9-1. ToStringで整数を3桁にゼロ埋めするには?
整数を3桁にゼロ埋めするには、ToString("D3")を使います。
C#int number = 7;
Console.WriteLine(number.ToString("D3"));
実行結果は次のとおりです。
C#007
カスタム書式を使う場合は、ToString("000")でも同じように表示できます。
C#int number = 7;
Console.WriteLine(number.ToString("000"));
実行結果は次のとおりです。
C#007
9-2. ToStringで小数点以下2桁にするには?
小数点以下2桁にするには、ToString("F2")を使います。
C#double value = 1.2;
Console.WriteLine(value.ToString("F2"));
実行結果は次のとおりです。
C#1.20
カンマ区切りも付けたい場合は、ToString("N2")を使います。
C#double value = 1234.5;
Console.WriteLine(value.ToString("N2"));
実行結果は次のとおりです。
C#1,234.50
9-3. ToString("D5")とToString("00000")の違いは?
ToString("D5")は、整数型で使う標準数値書式指定です。
C#int number = 123;
Console.WriteLine(number.ToString("D5"));
実行結果は次のとおりです。
C#00123
ToString("00000")は、カスタム数値書式指定です。
C#int number = 123;
Console.WriteLine(number.ToString("00000"));
実行結果は同じです。
C#00123
どちらも整数のゼロ埋めに使えますが、基本的なゼロ埋めならD5がシンプルです。
一方、整数部と小数部を組み合わせて細かく指定したい場合は、カスタム書式が便利です。
C#double value = 12.3;
Console.WriteLine(value.ToString("000.00"));
実行結果は次のとおりです。
C#012.30
9-4. ToStringで桁数を指定しても数値自体は変わる?
ToStringで桁数を指定しても、数値自体は変わりません。
C#int number = 12;
string text = number.ToString("D5");
Console.WriteLine(text);
Console.WriteLine(number);
実行結果は次のとおりです。
C#00012
12
ToStringは、表示用の文字列を作るメソッドです。
元の数値を変更するものではありません。
9-5. 小数点以下を切り捨てたい場合はどうする?
小数点以下を切り捨てたい場合は、ToString("F0")だけでは不十分です。
ToString("F0")は表示上丸められるため、値によっては繰り上がります。
C#double value = 12.9;
Console.WriteLine(value.ToString("F0"));
実行結果は次のようになります。
C#13
切り捨てたい場合は、Math.Truncateを使います。
C#double value = 12.9;
double truncated = Math.Truncate(value);
Console.WriteLine(truncated.ToString("F0"));
実行結果は次のとおりです。
C#12
小数点以下2桁で切り捨てたい場合は、次のようにします。
C#double value = 12.987;
double truncated = Math.Truncate(value * 100) / 100;
Console.WriteLine(truncated.ToString("F2"));
実行結果は次のとおりです。
C#12.98
まとめ
C#でToStringを使って桁数を指定する方法は、目的によって使い分けることが大切です。
整数をゼロ埋めしたい場合は、ToString("D5")のようにD指定を使います。
C#int number = 123;
Console.WriteLine(number.ToString("D5"));
実行結果は次のとおりです。
C#00123
小数点以下の桁数を固定したい場合は、F指定を使います。
C#double value = 12.3;
Console.WriteLine(value.ToString("F2"));
実行結果は次のとおりです。
C#12.30
カンマ区切りで見やすく表示したい場合は、N指定を使います。
C#double value = 1234567.8;
Console.WriteLine(value.ToString("N2"));
実行結果は次のとおりです。
C#1,234,567.80
より細かく桁数を指定したい場合は、0や#を使ったカスタム書式が便利です。
C#double value = 12.3;
Console.WriteLine(value.ToString("000.00"));
実行結果は次のとおりです。
C#012.30
また、文字列の桁数や表示幅をそろえたい場合は、PadLeft、PadRight、文字列補間の配置指定を使います。
C#string code = "123";
Console.WriteLine(code.PadLeft(6, '0'));
実行結果は次のとおりです。
C#000123
ToStringによる桁数指定は、あくまで表示用の文字列を作る処理です。元の数値そのものは変わりません。
整数のゼロ埋め、小数点以下の固定表示、カンマ区切り、表形式の表示など、目的に応じて適切な書式指定を使い分けましょう。

