VB.NET 四捨五入 小数点以下 桁数指定 最近接偶数への丸め

四捨五入を実現するには、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となりますので、注意が必要です。


これで四捨五入と「最近接偶数への丸め」の処理ができるようになりました。