プログラミング

VB.NETで端数処理(四捨五入、切り捨て、切り上げ)を行う方法

スポンサーリンク

VB.NETでの端数処理方法(四捨五入、切り捨て、切り上げ)について記載します。

四捨五入

MathクラスのRoundメソッドを使用して四捨五入を行うことができます。

ただし、Roundメソッドの端数処理は、銀行丸めと呼ばれる処理結果を返すため注意が必要です。

一般的な四捨五入を行うときは、引数にMidpointRounding.AwayFromZeroを指定します。

一般的な四捨五入

小数部を四捨五入するには、2番目の引数に小数部の桁数を指定します。

小数第一位の四捨五入(1.4⇒1)
Math.Round(1.4, 0, MidpointRounding.AwayFromZero)
小数第一位の四捨五入(1.5⇒2)
Math.Round(1.5, 0, MidpointRounding.AwayFromZero)
小数第二位の四捨五入(1.44⇒1.4)
Math.Round(1.44, 1, MidpointRounding.AwayFromZero)
小数第二位の四捨五入(1.45⇒1.5)
Math.Round(1.45, 1, MidpointRounding.AwayFromZero)

銀行丸めの四捨五入

銀行丸めとは、端数が0.5より小さい場合は切り捨て、0.5より大きい場合は切り上げます。

ここまでは一般的な四捨五入と同じですが、0.5と同じ場合は処理結果が偶数になるように端数処理を行います。

1.4 ⇒ 1
1.6 ⇒ 2
1.5 ⇒ 2
2.5 ⇒ 2
3.5 ⇒ 4

小数第一位の四捨五入(1.4⇒1)
Math.Round(1.4, 0)
小数第一位の四捨五入(1.6⇒2)
Math.Round(1.6, 0)
小数第一位の四捨五入(1.5⇒2)
Math.Round(1.5, 0)

整数部の四捨五入

Roundメソッドを使用して整数部の四捨五入を行うこともできます。

1の位の四捨五入(1111⇒1110)
Math.Round(1111 / 10, 0, MidpointRounding.AwayFromZero) * 10
10の位の四捨五入(1111⇒1100)
Math.Round(1111 / 100, 0, MidpointRounding.AwayFromZero) * 100
100の位の四捨五入(1111⇒1000)
Math.Round(1111 / 1000, 0, MidpointRounding.AwayFromZero) * 1000

切り捨て

MathクラスのFloorまたはTruncateメソッドを使用して切り捨てを行うことができます。

正の数の切り捨てであれば、どちらのメソッドでも同じ処理結果が返されますが、負の数の切り捨てでは、Floorメソッドは0から遠ざかる整数(小さな)へ、Truncateメソッドは0に近づく整数(大きな数)が返されます。

Floorメソッドの切り捨て

Floorメソッドでは、小数第一位を切り捨てします。

負の数の切り捨てでは、Floorメソッドは0から遠ざかる整数(小さな)になるように端数処理を行います。

小数第一位の切り捨て(1.5⇒1)
Math.Floor(1.5)
小数第一位の切り捨て(-1.5⇒-2)
Math.Floor(-1.5)
小数第二位の切り捨て(1.45⇒1.4)
Math.Floor(1.45 * 10) / 10
小数第二位の切り捨て(-1.45⇒-1.5)
Math.Floor(-1.45 * 10) / 10
1の位の切り捨て(15⇒10)
Math.Floor(15 / 10) * 10
1の位の切り捨て(-15⇒-20)
Math.Floor(-15 / 10) * 10

Truncateメソッドの切り捨て

Floorメソッドでは、小数第一位を切り捨てします。

負の数の切り捨てでは、Truncateメソッドは0に近づく整数(大きな数)になるように端数処理を行います。

小数第一位の切り捨て(1.5⇒1)
Math.Truncate(1.5)
小数第一位の切り捨て(-1.5⇒-1)
Math.Truncate(-1.5)
小数第二位の切り捨て(1.45⇒1.4)
Math.Truncate(1.45 * 10) / 10
小数第二位の切り捨て(-1.45⇒-1.4)
Math.Truncate(-1.45 * 10) / 10
1の位の切り捨て(15⇒10)
Math.Truncate(15 / 10) * 10
1の位の切り捨て(-15⇒-10)
Math.Truncate(-15 / 10) * 10

切り上げ

MathクラスのCeilingメソッドを使用して切り上げを行うことができます。

Ceilingメソッドでは、大きな整数になるように端数処理を行います。

小数第一位の切り上げ(1.5⇒2)
Math.Ceiling(1.5)
小数第一位の切り上げ(-1.5⇒-1)
Math.Ceiling(-1.5)
小数第二位の切り上げ(1.45⇒1.5)
Math.Ceiling(1.45 * 10) / 10
小数第二位の切り上げ(-1.45⇒-1.4)
Math.Ceiling(-1.45 * 10) / 10
1の位の切り上げ(15⇒20)
Math.Ceiling(15 / 10) * 10
1の位の切り上げ(-15⇒-10)
Math.Ceiling(-15 / 10) * 10
タイトルとURLをコピーしました