VB.NET 四捨五入のサンプル(Round)

VB.NETの四捨五入のサンプルです。

確認環境
・Microsoft Visual Studio Community 2019

目次

四捨五入 四捨五入(Round)
注意点 四捨五入の銀行丸め

四捨五入(Round)

四捨五入のサンプルです。Roundメソッドを使用します。

Module Module1
  Sub Main()

    Dim a As Double = 12.262
    ' 小数第一位で四捨五入
    Console.WriteLine(Math.Round(a, MidpointRounding.AwayFromZero)) '12
    ' 小数第二位で四捨五入
    Console.WriteLine(Math.Round(a, 1, MidpointRounding.AwayFromZero)) '12.3
    ' 小数第三位で四捨五入
    Console.WriteLine(Math.Round(a, 2, MidpointRounding.AwayFromZero)) '12.26

    Dim b As Double = 12.828
    ' 小数第一位で四捨五入
    Console.WriteLine(Math.Round(b, MidpointRounding.AwayFromZero)) '13
    ' 小数第二位で四捨五入
    Console.WriteLine(Math.Round(b, 1, MidpointRounding.AwayFromZero)) '12.8
    ' 小数第三位で四捨五入
    Console.WriteLine(Math.Round(b, 2, MidpointRounding.AwayFromZero)) '12.83

  End Sub
End Module

Roundメソッドの2つめの数値の引数は、戻り値の小数部の桁数です。
6行目は、Roundメソッドの2つめの数値の引数がないので、小数第一位で四捨五入され、結果は整数になります。
8行目は、Roundメソッドの2つめの数値の引数が1なので、小数第二位で四捨五入され、結果は少数第一位までの数値になります。

以下は、Microsoft公式のRoundメソッドのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.math.round?view=netframework-4.8

四捨五入の銀行丸め

Roundメソッドで、3つめの引数のMidpointRounding.AwayFromZeroを指定しない場合、銀行丸めになります。
銀行丸めは、端数が0.5で、整数の箇所が偶数の場合は、ゼロへ丸めます。

Module Module1
  Sub Main()

    Dim a As Double = 2.5
    ' 小数第一位で四捨五入
    Console.WriteLine(Math.Round(a)) '2
    Console.WriteLine(Math.Round(a, MidpointRounding.AwayFromZero)) '3

    Dim b As Double = 3.5
    ' 小数第一位で四捨五入
    Console.WriteLine(Math.Round(b)) '4
    Console.WriteLine(Math.Round(b, MidpointRounding.AwayFromZero)) '4

  End Sub
End Module

4行目は、変数に2.5を代入しています。
6行目は、Roundで四捨五入していますが結果は2です。端数が0.5で、整数の箇所が偶数のため銀行丸めになっています。
7行目は、3つめの引数のMidpointRounding.AwayFromZeroを指定しているため結果は3です。

9行目は、変数に3.5を代入しています。
この場合は、整数の箇所が奇数なので結果は4です。

関連の記事

VB.NET 計算のサンプル(a += 1やa -= 1)

△上に戻る