四捨五入には
・通常の四捨五入
・銀行丸めの四捨五入
の2種類があります!
四捨五入をする際は
・通常の四捨五入をすべきか
・銀行丸めの四捨五入をすべきか
を確認しましょう!
※どちらの四捨五入をするかによって結果が変わってきます。
※誤った四捨五入によるバグは「あるある」です。
通常の四捨五入
「通常の四捨五入」は学校で習った四捨五入です。みなさんご存じのやつです。
「通常の四捨五入」では端数が
・0.5未満(0.1~0.4)の場合、切り下げ
・0.5の場合、切り上げ
・0.5以上(0.6~0.9)の場合、切り上げ
します。
例えば
・14.1 ならば 14 ←切り下げ
・14.5 ならば 15 ←切り上げ
・14.6 ならば 15 ←切り上げ
です。
VBAで「通常の四捨五入」をする場合は
・「WorksheetFunction」オブジェクトの「Round」メソッド
を使用します。
Sub sample()
Debug.Print "14.1の通常の四捨五入:" & WorksheetFunction.Round(14.1, 0)
Debug.Print "14.5の通常の四捨五入:" & WorksheetFunction.Round(14.5, 0)
Debug.Print "14.6の通常の四捨五入:" & WorksheetFunction.Round(14.6, 0)
End Sub
銀行丸めの四捨五入
基本的には「通常の四捨五入」と同じです。
ですが「端数が0.5」の場合のみ「通常の四捨五入」と結果が違います。
「銀行丸めの四捨五入」では端数が
・0.5未満(0.1~0.4)の場合、切り下げ
・0.5の場合、四捨五入した結果が偶数になるように切り下げ or 切り上げ
・0.5以上(0.6~0.9)の場合、切り上げ
します。
例えば
・14.1 ならば 14 ←切り下げ
・14.5 ならば 14 ←偶数になるように切り下げ。「通常の四捨五入」では切り上げだが。
・14.6 ならば 15 ←切り上げ
になります。
VBAで「銀行丸めの四捨五入」をする場合は
・VBA関数である「Round」関数
を使用します。
Sub sample2()
Debug.Print "14.1の銀行丸めの四捨五入:" & Round(14.1, 0)
Debug.Print "14.5の銀行丸めの四捨五入:" & Round(14.5, 0)
Debug.Print "14.6の銀行丸めの四捨五入:" & Round(14.6, 0)
End Sub
まとめ
上記のまとめです。
通常の 四捨五入 | 銀行丸めの 四捨五入 | |
---|---|---|
14.1 | 14 | 14 |
14.5 | 15 | 14 |
14.6 | 15 | 15 |
参考
上記のVBAコードで使用している以下の詳細は、公式サイトをご確認ください。
●「WorksheetFunction」オブジェクトの「Round」メソッド
●VBA関数である「Round」関数