四捨五入を実現するには、MathクラスのRoundメソッドを使用します。
基本的な使い方
Sub Main()
Dim d1 As Double = 9.385
' 小数第一位で四捨五入
Console.WriteLine(Math.Round(d1, MidpointRounding.AwayFromZero))
' 小数第二位で四捨五入
Console.WriteLine(Math.Round(d1, 1, MidpointRounding.AwayFromZero))
' 小数第三位で四捨五入
Console.WriteLine(Math.Round(d1, 2, MidpointRounding.AwayFromZero))
Dim d2 As Double = 9.614
' 小数第一位で四捨五入
Console.WriteLine(Math.Round(d2, MidpointRounding.AwayFromZero))
' 小数第二位で四捨五入
Console.WriteLine(Math.Round(d2, 1, MidpointRounding.AwayFromZero))
' 小数第三位で四捨五入
Console.WriteLine(Math.Round(d2, 2, MidpointRounding.AwayFromZero))
End Sub
9
9.4
9.39
10
9.6
9.61
MathクラスのRound関数の使い方です。
第1引数は、四捨五入したい数値、変数などを指定します。
第2引数は、四捨五入後の小数点以下の桁数を指定します。
第3引数は、数値の丸め方を指定します。
通常の四捨五入をしたい場合は、
MidpointRounding.AwayFromZeroを指定します。
これで小数点以下の四捨五入処理ができます。
最近接偶数への丸め
丸め方の種類として「最近接偶数への丸め」と言う丸め方があります。
これは、最も近い偶数に数値を丸める。という端数処理方法です。
例えば、6.5の場合は6になり、7.5の場合は8になります。
このような丸め方は
莫大な量を処理した時の誤差が小さくなると言うメリットがあり、
銀行などの処理で良く使用されたようです。
そのため「銀行丸め」と呼ばれる事もあるようです。
「最近接偶数への丸め」のサンプル
Sub Main()
'最近接偶数への丸め
Console.WriteLine(Math.Round(1.5, MidpointRounding.ToEven)) '出力 2
Console.WriteLine(Math.Round(2.5, MidpointRounding.ToEven)) '出力 2
Console.WriteLine(Math.Round(3.5, MidpointRounding.ToEven)) '出力 4
Console.WriteLine(Math.Round(4.5, MidpointRounding.ToEven)) '出力 4
'最近接偶数への丸め 小数点以下
Console.WriteLine(Math.Round(1.51, MidpointRounding.ToEven)) '出力 2
Console.WriteLine(Math.Round(2.51, MidpointRounding.ToEven)) '出力 3
Console.WriteLine(Math.Round(3.51, MidpointRounding.ToEven)) '出力 4
Console.WriteLine(Math.Round(4.51, MidpointRounding.ToEven)) '出力 5
'最近接偶数への丸め 小数点以下
Console.WriteLine(Math.Round(1.55, MidpointRounding.ToEven)) '出力 2
Console.WriteLine(Math.Round(2.55, MidpointRounding.ToEven)) '出力 3
Console.WriteLine(Math.Round(3.55, MidpointRounding.ToEven)) '出力 4
Console.WriteLine(Math.Round(4.55, MidpointRounding.ToEven)) '出力 5
End Sub
「最近接偶数への丸め」を指定するには、
MidpointRounding.ToEvenを指定します。
どのような出力結果になるのかを知っておきましょう。
2.5では2となるのに、2.51では3となる仕様です。
ちなみにRound(2.5)のように、
第1引数のみ指定した場合の丸め方は
「最近接偶数への丸め」が適用され、
出力は2となりますので、注意が必要です。
これで四捨五入と「最近接偶数への丸め」の処理ができるようになりました。