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