VB.NETの四捨五入のサンプルです。
確認環境 ・Microsoft Visual Studio Community 2019 |
目次
四捨五入 | 四捨五入(Round) |
注意点 | 四捨五入の銀行丸め |
四捨五入(Round)
Public Shared Function Round(value As Double, mode As MidpointRounding) As Double |
Public Shared Function Round(value As Double, digits As Integer, mode As MidpointRounding) As Double |
四捨五入のサンプルです。Roundメソッドを使用します。
Roundメソッドの2つめの数値の引数(digits)は、戻り値の小数部の桁数です。
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
6行目は、Roundメソッドの2つめの数値の引数がないので、小数第一位で四捨五入され、結果は整数になります。
8行目は、Roundメソッドの2つめの数値の引数が1なので、小数第二位で四捨五入され、結果は少数第一位までの数値になります。
以下は、Microsoft公式のRoundメソッドのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.math.round?view=netframework-4.8
四捨五入の銀行丸め
Public Enum MidpointRounding ToEven = 0 AwayFromZero = 1 End Enum |
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です。
関連の記事