カスタム数値書式指定文字列で"#"を用いると、0が空の文字列として表示される - C#

カスタム数値書式指定文字列で"#"を用いると、0を表示した際に空の文字列として表示されることがあります。
0の場合でも"0"の文字を表示する書式設定について紹介します。

現象の確認

こちらの記事では、カスタム数値書式指定文字列を用いて、3桁ごとのカンマ区切りで数値を整形して表示していますが、値が0の時はから文字列が表示されています。

対策

"#"プレースホルダーを用いた場合、桁がない、または数値が0の時は空白文字が表示されます。0を表示する場合は、"0"プレースホルダーを用います。

テストプログラム

UI

下図のUIを作成します。Buttonを2つ、MultilinesプロパティをTrueにしたテキストボックスを配置します。(今回、ボタンはTest 02のみを利用します。)

コード

以下のコードを記述します。Button2のClickイベントを実装します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace NumericFormatDemo
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
      int value = 1286000;
      textBox1.Text += string.Format("{0:#,0}\r\n", value);

      value = 2500;
      textBox1.Text += string.Format("{0:#,0}\r\n", value);

      value = 0;
      textBox1.Text += string.Format("{0:#,0}\r\n", value);

      double dvalue = 10.5624;
      textBox1.Text += string.Format("{0:#,0}\r\n", dvalue);

      dvalue = 0.012;
      textBox1.Text += string.Format("{0:#,0}\r\n", dvalue);
    }
  }
}

解説

カスタム数値書式指定文字列で "#,0"と指定することで、3桁ごとにカンマ区切りをし、1の位の数値が0であった場合は"0"を文字として表示します。値が0の場合や四捨五入して0以下になる小数の場合、"0"が表示されます。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


[Test 02]ボタンをクリックします。結果が"0"になる数値の場合、空白文字ではなく"0"が表示されます。

補足

3桁ごとのカンマ区切りが必要ない場合は、カスタム数値書式指定文字列に"0"のみを指定します。
  textBox1.Text += string.Format("{0:0}\r\n", value);
とします。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2021-01-17
作成日: 2014-07-10
iPentec all rights reserverd.