.NET TIPS

数値を3けた区切りの文字列に変換するには?[C#、VB]

デジタルアドバンテージ 一色 政彦
2007/07/19

 金額や容量(例:バイト数)など、桁(けた)数が長い数値を画面に表示したり、印刷したりする場合、単位が判別しやすくなるように、3桁単位で区切り文字「,」を挿入することが多々ある。例えば「1234567」という数値は、次のように3桁ごとに区切られる。

1,234,567

 .NETプログラミングで数値をこのような3桁区切りの文字列に変換するには、Stringクラス(System名前空間)の静的メソッドFormatを利用すると簡単だ。具体的には、次のようにしてString.Formatメソッドを呼び出す。

String.Format("{0:#,0} バイト", 1234567)

 メソッドの第2パラメータに指定している「1234567」は変換前の数値である。実際にはここに任意の数値を指定する。

 第1パラメータに指定している文字列内の「{0:#,0}」は、“書式指定項目”と呼ばれ、この指定によって数値が3桁区切りになる(※逆にいえば{ 〜 }で囲まれていない部分、この例でいうと「 バイト」は、そのまま文字列として出力される)。なお、(数値から文字列に変換する際の)書式指定項目の書き方について詳しくは「TIPS:数値を右詰めや0埋めで文字列化するには?」を参考にしてほしい(本稿では説明を割愛する)。

 「0:#,0」の意味を簡単に説明しておくと、

「インデックス『0』番目のパラメータ(=Argument)に指定された数値(上記の例では、第2パラメータの「1234567」に該当)を、その整数部分の各数値グループ(=3桁ごとの文字列)の間に桁区切り文字(,)を挿入して文字列に変換する」

という意味になる。

 出力文字列で「桁区切り文字(,)の挿入」が実現されるのは、書式指定項目で「桁区切り記号(,)」が指定されているからだ。「,」の前にある「#」は“桁プレースホルダ”、「,」の後にある「0」は“ゼロ・プレースホルダ”と呼ばれるもので、「,」は(単独では使えず)これらいずれかのプレースホルダの“間”に指定しなければならない。そのため、(「,」ではなく)「#,0」という記述になるわけだ(桁プレイスホルダは数字を表示するか何も表示しないことを指定するもので、ゼロ・プレイスホルダは数字または「0」を必ず表示することを指定する。つまり、書式指定項目に「#,0」と指定した場合、引数の数値が「0」のときには「0」という文字列が出力されることになる。しかし、「0,0」の場合には「00」と出力され、「#,#」の場合は何も表示されないので注意が必要だ)。

 次のサンプル・プログラムは、実際にString.Formatメソッドにより、数値を3桁区切りの文字列に変換する例である。

using System;

class Program
{
  static void Main()
  {
    int number = 9876543; // 変換前の数値
    string str = String.Format("{0:#,0} Bytes", number); // 変換後
    Console.WriteLine(str);  // 出力:9,876,543 Bytes
  }
}
Module Module1

  Sub Main()
    Dim number As Integer = 9876543 ' 変換前の数値
    Dim str As String = String.Format("{0:#,0} Bytes", number)
    Console.WriteLine(str)  ' 出力:9,876,543 Bytes
  End Sub

End Module
数値を3桁区切りの文字列に変換するサンプル・プログラム(上:C#、下:VB)

 3桁区切りは日本でも一般的な数値表現だが、現実の日本円の単位は4桁ごとに万→億→兆と繰り上がるので、4桁ごとに区切ってほしいという要望も少なくはないだろう。そこで4桁区切りにする方法について、後日公開予定の「TIPS:数値を4けた区切りの文字列に変換するには?」で紹介する。

 ちなみに、3桁区切りの文字列を右詰めにしたい場合には、本稿で紹介した方法に、「TIPS:数値を右詰めや0埋めで文字列化するには?」の方法を組み合わせればよい(詳細は割愛)。End of Article

カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Stringクラス(System名前空間)
関連TIPS:数値を右詰めや0埋めで文字列化するには?
関連TIPS:数値を4けた区切りの文字列に変換するには?(後日公開予定)

この記事と関連性の高い別の.NET TIPS
数値を4けた区切りの文字列に変換するには?
DataGridViewコントロールで数値を3けた区切りで表示するには?
文字列を数値に変換するには?
バイト列と数値を変換するには?
数値を右詰めや0埋めで文字列化するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH