小数を指定した小数点以下の桁数にする - C#

C#で小数を指定した小数点以下の桁数にするコードを紹介します。

概要

C#で小数を指定した桁数にし、下位の桁を切り捨てたい場合があります。

方法1: Roundメソッドを利用する

数値を四捨五入する方法で問題がなければ、Roundメソッドを利用できます。Roundメソッドには桁数をしているするパラメーターがあり、 小数点以下の桁数を指定して数値を丸めることができます。
なお、Roundメソッドの詳細についてはこちらの記事を参照してください。

UI

下図のフォームを作成します。テキストボックスを2つとボタンを1つ配置します。

コード

以下のコードを記述します。[button1]のクリックイベントを実装します。
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 FloatDemo
{
  public partial class FormFloatingDigits : Form
  {
    public FormFloatingDigits()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      double value = Convert.ToDouble(textBox1.Text);
      double result =  Math.Round(value, 3);
      textBox2.Text = Convert.ToString(result);
    }
  }
}

解説

上部のテキストボックスに入力された値をdouble型に変換して変数に代入します。
  double value = Convert.ToDouble(textBox1.Text);

Math.Round() メソッドを呼び出し、指定した桁数にします。今回の例では第二引数に3を指定しており、小数点以下3桁の数値に丸めます。
  double result =  Math.Round(value, 3);

結果の数値を下部のテキストボックスに表示します。
  textBox2.Text = Convert.ToString(result);

実行結果

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


上部のテキストボックスに数値をにゅるよくします。今回は 1.5875746 を入力します。


[button1]をクリックします。下部のテキストボックスに 12.588 の数値が表示されます。小数点以下3桁の数値に丸められたことが確認できます。 また、入力した数値の小数点以下第四桁の値が"5"のため、四捨五入されており、小数点以下第三桁の値が"8"になっていることも確認できます。


なお、入力する数値を "12.587012" とした場合、小数点以下第四桁の値が"0"のため、切り捨てとなり、下部のテキストボックスには 12.587 の値が表示されます。

方法2: Truncate, Floor, Ceiling メソッドを利用する

Truncate, Floor, Ceiling メソッドを利用して桁の処理をしたい場合は、10のn乗をかけて、桁上げしてからメソッドを呼び出し、結果の数値を10のn乗で割り桁下げする方法で計算します。
  • Truncateメソッドの詳細についてはこちらの記事を参照してください。
  • Floorメソッドの詳細についてはこちらの記事を参照してください。
  • Ceiling メソッドの詳細についてはこちらの記事を参照してください。

UI

下図のフォームを作成します。テキストボックス2つとボタンを3つ配置します。

コード

下記のコードを記述します。3つのボタンのクリックイベントを実装します。
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 FloatDemo
{
  public partial class FormFloatingDigits : Form
  {
    public FormFloatingDigits()
    {
      InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
      double value = Convert.ToDouble(textBox1.Text);
      value = value * Math.Pow(10, 3);
      value = Math.Truncate(value);
      double result = value / Math.Pow(10, 3);
      textBox2.Text = Convert.ToString(result);
    }

    private void button3_Click(object sender, EventArgs e)
    {
      double value = Convert.ToDouble(textBox1.Text);
      value = value * Math.Pow(10, 3);
      value = Math.Floor(value);
      double result = value / Math.Pow(10, 3);
      textBox2.Text = Convert.ToString(result);
     
    }

    private void button4_Click(object sender, EventArgs e)
    {
      double value = Convert.ToDouble(textBox1.Text);
      value = value * Math.Pow(10, 3);
      value = Math.Ceiling(value);
      double result = value / Math.Pow(10, 3);
      textBox2.Text = Convert.ToString(result);
    }
  }
}

解説

今回のコードでは小数点以下3桁にそろえる処理をしています。

button2のコードで動作を確認します。
上部のテキストボックスに入力された数値をvalue変数に代入します。
  double value = Convert.ToDouble(textBox1.Text);

桁上げします。今回は小数点以下3桁にするため、10の3乗をかけます。
  value = value * Math.Pow(10, 3);

Truncateメソッドを呼び出し、掛けた数値の小数点以下の値を処理します。
  value = Math.Truncate(value);

10の3乗で割り、桁下げします。
  double result = value / Math.Pow(10, 3);

結果を下部のテキストボックスに表示します。
  textBox2.Text = Convert.ToString(result);

他のボタンも同様の処理です。

実行結果

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


上部のテキストボックスに数値を入力します。今回は "2.25467853" を入力しました。


[Truncate]ボタン(button2)をクリックします。下部のテキストボックスに小数点以下3桁の数値が表示されます。小数点第4位は切り捨てられます。


[Floor]ボタン(button3)をクリックします。下部のテキストボックスに小数点以下3桁の数値が表示されます。小数点第4位は切り捨てられます。


[Ceiling]ボタン(button4)をクリックします。下部のテキストボックスに小数点以下3桁の数値が表示されます。小数点第4位は切り上げられます。

方法3: Formatメソッドを利用する

結果を画面に表示するために、文字列での表示のみでよい場合はには、Formatメソッドを利用することができます。 Formatメソッドを利用して小数を出力するコードはこちらの記事を参照してください。

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