値の四捨五入
銀行丸めで四捨五入する
指定した値を、銀行丸め(最も近い偶数に寄せて四捨五入すること)で四捨五入するには、MathクラスのRoundメソッドを使用します。
Math.Round(数値)
それではサンプルを見てみましょう。
Console.WriteLineを使って、Roundの動作をコンソールに出力します。
1 2 3 4 5 6 7 8 9 |
Dim d1 As Double = 1.5 Dim d2 As Double = 2.5 Dim d3 As Double = -1.5 Dim d4 As Double = -2.5 Console.WriteLine(Math.Round(d1)) Console.WriteLine(Math.Round(d2)) Console.WriteLine(Math.Round(d3)) Console.WriteLine(Math.Round(d4)) |
上記を実行した結果がこちらです。
実行結果
2
2
-2
-2
実行結果がコンソールに出力されました。
通常の四捨五入では2.5は3となりますが、銀行丸めでの四捨五入であるため、2となっているのがわかります。
完全な四捨五入をする
完全な四捨五入をするには、MathクラスのRoundメソッドの第2引数にMidpointRounding.AwayFromZeroを指定します。
なぜ銀行丸めが引数なしで、完全な四捨五入に引数が必要かというと、銀行丸めでの四捨五入がIEEE754で定められているからなんです。
つまり、銀行丸めのほうがより一般的な四捨五入であるということです。
Math.Round(数値, MidpointRounding.AwayFromZero)
それではサンプルを見てみましょう。
Console.WriteLineを使って、Roundの動作をコンソールに出力します。
1 2 3 4 5 6 7 8 9 |
Dim d1 As Double = 1.5 Dim d2 As Double = 2.5 Dim d3 As Double = -1.5 Dim d4 As Double = -2.5 Console.WriteLine(Math.Round(d1, MidpointRounding.AwayFromZero)) Console.WriteLine(Math.Round(d2, MidpointRounding.AwayFromZero)) Console.WriteLine(Math.Round(d3, MidpointRounding.AwayFromZero)) Console.WriteLine(Math.Round(d4, MidpointRounding.AwayFromZero)) |
上記を実行した結果がこちらです。
実行結果
2
3
-2
-3
実行結果がコンソールに出力されました。
今度は2.5が3となり、完全な四捨五入が行われてことがわかります。
以上が、数値の四捨五入を行うメソッド「Round」の使い方です。
ぜひ参考にしてみてください。