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ではなく、PadLeftPadRightstring.Format、文字列補間などを使うのが一般的です。

1-4. 標準数値書式指定文字列とカスタム数値書式指定文字列の違い

C#の数値書式には、大きく分けて次の2種類があります。

1つ目は、標準数値書式指定文字列です。

C#
int number = 123;

Console.WriteLine(number.ToString("D5"));
Console.WriteLine(number.ToString("N0"));

DFNなどの決まった書式を使う方法です。

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指定は、doublefloatdecimalなどの小数型で使えます。

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. カスタム書式で桁数を細かく指定する方法

DFNなどの標準書式だけでなく、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")を使います。

一方、すでに文字列になっている値の長さをそろえたい場合は、PadLeftPadRightを使います。

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の書式指定、文字列にはPadLeftPadRightを使うと覚えておくとわかりやすいです。

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

IDD4でゼロ埋めし、Nameは左寄せ、Priceは右寄せで表示しています。

7. ToStringの桁数指定でよくある間違い

ToStringの桁数指定は便利ですが、書式指定を間違えるとエラーになったり、期待と違う結果になったりします。

ここでは、よくある間違いを確認しておきましょう。

7-1. ToString("D")は整数型で使う

D指定は整数型で使う書式です。

C#
int number = 123;

Console.WriteLine(number.ToString("D5"));

実行結果は次のとおりです。

C#
00123

intlongshortなどの整数型で使えます。

C#
long number = 12345L;

Console.WriteLine(number.ToString("D8"));

実行結果は次のとおりです。

C#
00012345

7-2. 小数にD指定を使うとエラーになるケース

doubledecimalなどの小数型に"D5"を指定すると、書式が合わないためエラーになることがあります。

C#
double value = 12.34;

Console.WriteLine(value.ToString("D5"));

このような書き方は、小数型には適していません。

小数点以下の桁数を指定したい場合は、FNを使います。

C#
double value = 12.34;

Console.WriteLine(value.ToString("F2"));

実行結果は次のとおりです。

C#
12.34

7-3. F指定やN指定では小数が丸められる

FNで小数点以下の桁数を指定すると、表示結果は丸められます。

C#
double value = 1.999;

Console.WriteLine(value.ToString("F2"));
Console.WriteLine(value.ToString("N2"));

実行結果は次のようになります。

C#
2.00
2.00

F2N2は、小数点以下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

また、文字列の桁数や表示幅をそろえたい場合は、PadLeftPadRight、文字列補間の配置指定を使います。

C#
string code = "123";

Console.WriteLine(code.PadLeft(6, '0'));

実行結果は次のとおりです。

C#
000123

ToStringによる桁数指定は、あくまで表示用の文字列を作る処理です。元の数値そのものは変わりません。

整数のゼロ埋め、小数点以下の固定表示、カンマ区切り、表形式の表示など、目的に応じて適切な書式指定を使い分けましょう。