【C#】数値の書式指定:ToStringで桁数、カンマ、0埋めを制御する方法

目次

数値の書式設定(フォーマット)

C#で数値をToString()メソッドを使って文字列に変換する際、単に値を文字列にするだけでなく、「000123のように0で桁を埋めたい」や「1,234,567のように3桁区切りのカンマを付けたい」、「小数点以下3桁まで表示したい」といった、表示形式を整えたい場合があります。

ToString()メソッドは、引数に「書式指定文字列」を渡すことで、これらの要求に柔軟に応えることができます。

この記事では、C#における数値の書式指定を「標準の書式指定子」と「カスタム書式指定子」の2つのカテゴリに分けて解説します。


標準数値書式指定子

標準の書式指定子は、"N""D"のような単一のアルファベット文字で、一般的な書式(通貨、10進数、16進数、パーセントなど)を簡単に指定するためのものです。

指定子名称説明と例 (例: 1234.5)
D10進数 (Decimal)整数専用"D5" のように桁数を指定すると、0でパディング(01234)されます。
F固定小数点小数点以下の桁数を固定します。"F3" と指定すると 1234.500 となります。
N数値 (Number)1,234.50 のように、3桁区切りのカンマと小数点以下(デフォルト2桁)を付与します。"N0"で小数点以下0桁にできます。
C通貨 (Currency)¥1,234 のように、カルチャ(地域設定)に応じた通貨記号と桁区切りを付与します。"C0"で小数点以下0桁にできます。
E指数 (Exponential)1.234500E+003 のように、科学的指数表記に変換します。
Pパーセント値を100倍し、パーセント記号(%)を付与します。1234.5 -> 123,450.00 %
X16進数整数専用。値を16進数に変換します。

カスタム数値書式指定子

カスタム書式指定子は、0#といった記号を組み合わせて、より詳細で柔軟な書式を定義するためのものです。

記号名称説明
0ゼロプレースホルダー対応する位置に数値が存在しない場合、0で埋めます(パディング)。
#数字プレースホルダー対応する位置に数値が存在する場合のみ表示し、存在しない場合は何も表示しません
.小数点小数点の位置を指定します。
,桁区切り3桁区切り(カンマ)を指定します。(.の手前に置く必要があります)

0# の違い(0埋め)

0# の違いは、数値が指定した桁数に満たない場合の「0埋め」の有無です。

int shortId = 123;

// "00000" : 5桁に満たない部分を 0 で埋める
string formatZero = shortId.ToString("00000"); 
// 結果: "00123"

// "#####" : 5桁を指定するが、# は 0 を強制しない
string formatHash = shortId.ToString("#####");
// 結果: "123"

カンマ区切りと小数点以下の制御

#,0 のパターンは、0の位(1の位)までを必ず表示し、それより上の桁を3桁区切り(#)にする、という定番の書式です。

long largeAmount = 1234567890;
double preciseValue = 12345.6;

// "#,0" : 整数部分を3桁区切りにする
string formatComma = largeAmount.ToString("#,0");
// 結果: "1,234,567,890"

// "#,0.00" : 3桁区切りにし、小数点以下を2桁 (00) で固定する
string formatDecimal = preciseValue.ToString("#,0.00");
// 結果: "12,345.60" (末尾が0でパディングされる)

string.Format と 文字列補間

ToString()メソッドの代わりに、string.Formatメソッドや、より直感的な**文字列補間($)**を使用しても、これらの書式指定子を適用できます。

書式指定は {変数名:書式} のようにコロン(:)の後ろに記述します。


コード例

using System;
using System.Globalization;

public class FormattingExample
{
    public static void Main()
    {
        // カルチャを日本に設定(¥ と , のため)
        CultureInfo.CurrentCulture = new CultureInfo("ja-JP");

        int orderId = 123;
        long totalSales = 2500000;
        double accuracy = 0.987654;

        Console.WriteLine("--- 標準数値書式 ---");
        
        // D (10進数) : 6桁 0埋め
        Console.WriteLine($"注文ID (D6): {orderId.ToString("D6")}");
        
        // N (数値) : 桁区切り (小数点以下0桁)
        Console.WriteLine($"売上 (N0): {totalSales.ToString("N0")}");
        
        // C (通貨) : 通貨記号
        Console.WriteLine($"売上 (C0): {totalSales.ToString("C0")}");

        // F (固定小数点) : 小数点以下3桁
        Console.WriteLine($"精度 (F3): {accuracy.ToString("F3")}");
        
        // P (パーセント) : 小数点以下1桁
        Console.WriteLine($"精度 (P1): {accuracy.ToString("P1")}");


        Console.WriteLine("\n--- カスタム数値書式 ---");

        // 0 (ゼロプレースホルダー)
        Console.WriteLine($"カスタム0埋め: {orderId.ToString("000000")}");
        
        // #,0 (カスタム桁区切り)
        Console.WriteLine($"カスタム桁区切り: {totalSales.ToString("#,0")}");
        
        // #,0.000 (桁区切り + 小数点固定)
        Console.WriteLine($"カスタム小数点: {accuracy.ToString("#.000")}");
        

        Console.WriteLine("\n--- 文字列補間 ---");
        
        // string.Format や ToString() の代わりに、文字列補間($)を使う
        string summary = $"ID: {orderId:D6} の売上は {totalSales:C0} です。";
        Console.WriteLine(summary);
    }
}

出力結果:

--- 標準数値書式 ---
注文ID (D6): 000123
売上 (N0): 2,500,000
売上 (C0): ¥2,500,000
精度 (F3): 0.988
精度 (P1): 98.8%

--- カスタム数値書式 ---
カスタム0埋め: 000123
カスタム桁区切り: 2,500,000
カスタム小数点: .988

--- 文字列補間 ---
ID: 000123 の売上は ¥2,500,000 です。

まとめ

数値を文字列に変換する際、ToString()メソッドに書式指定子を渡すことで、表示形式を細かく制御できます。

  • 標準書式 ("N", "C", "D5"など): 一般的な要件(通貨、0埋め)を素早く満たします。
  • カスタム書式 ("#,0.00"など): 桁区切りや0埋め、小数点以下の桁数を組み合わせて、独自の書式を定義できます。

これらの書式指定は、string.Formatや文字列補間($)でも同様に利用でき、C#でのUI表示やログ出力において不可欠な機能です。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次