ここではVB.NETで数値の端数処理(四捨五入/切り捨て/切り上げ)をする方法について紹介します。

四捨五入(Math.Roundメソッド)

Math.Roundメソッドは、四捨五入する小数点の位置を指定できます。一般的な四捨五入にしたい場合は、第3引数に MidpointRounding.AwayFromZero を指定します。指定しないと偶数の数値に丸められます。

Dim ret As Decimal
Dim num As Decimal

num = 1.56789

' 小数第1位を四捨五入する
ret = Math.Round(num, 0, MidpointRounding.AwayFromZero)
Console.WriteLine(ret)
' 実行結果:2

num = 1.56789

' 小数第2位を四捨五入する
ret = Math.Round(num, 1, MidpointRounding.AwayFromZero)
Console.WriteLine(ret)
' 実行結果:1.6

num = 1.56789

' 小数第3位を四捨五入する
ret = Math.Round(num, 2, MidpointRounding.AwayFromZero)
Console.WriteLine(ret)
' 実行結果:1.57


切り捨て(Math.Floorメソッド)

Math.Floorメソッドは、切り捨てる小数点の位置を指定できないので、切り捨て前に値を10倍し、切り捨てた後に1/10にする操作が必要になります。

Dim ret As Decimal
Dim num As Decimal

num = 1.56789

' 小数第1位を切り捨てる
ret = Math.Floor(num)
Console.WriteLine(ret)
' 実行結果:1

num = 1.56789

' 小数第2位を切り捨てる
num *= 10
ret = Math.Floor(num)
ret /= 10
Console.WriteLine(ret)
' 実行結果:1.5

num = 1.56789

' 小数第3位を切り捨てる
num *= 100
ret = Math.Floor(num)
ret /= 100
Console.WriteLine(ret)
' 実行結果:1.56


切り上げ(Math.Ceilingメソッド)

Math.Ceilingメソッドは、切り上げする小数点の位置を指定できないので、切り上げ前に値を10倍し、切り上げた後に1/10にする操作が必要になります。

Dim ret As Decimal
Dim num As Decimal

num = 1.23456

' 小数第1位を切り上げる
ret = Math.Ceiling(num)
Console.WriteLine(ret)
' 実行結果:2

num = 1.23456

' 小数第2位を切り上げる
num *= 10
ret = Math.Ceiling(num)
ret /= 10
Console.WriteLine(ret)
' 実行結果:1.3

num = 1.23456

' 小数第3位を切り上げる
num *= 100
ret = Math.Ceiling(num)
ret /= 100
Console.WriteLine(ret)
' 実行結果:1.24


以上、VB.NETで数値の端数処理(四捨五入/切り捨て/切り上げ)をする方法について解説しました。