
銀行丸めと四捨五入の違いを理解する
「Round() を使ったのに、結果が合わない…」
これは VBA 初心者がよくはまる問題です。
VBA の Round() は四捨五入じゃない?
Round(2.5)
' → 2
Round(3.5)
' → 4
👉 VBA の Round は 銀行丸め(偶数丸め) です。
銀行丸めとは?
-
ちょうど .5 の場合
→ 最も近い偶数へ丸める
| 値 | 結果 |
|---|---|
| 2.5 | 2 |
| 3.5 | 4 |
| 4.5 | 4 |
四捨五入したい場合の対策
よく使われる方法
Function MyRound(value As Double) As Long
MyRound = Int(value + 0.5)
End Function
👉 金額計算などでは 必ず確認必須 です。
なぜ銀行丸めが使われるのか?
-
大量計算時の誤差を平均化するため
-
会計・統計では一般的
👉 ただし 日本の業務感覚では違和感が出やすい
実務での注意点まとめ
-
Round() = 四捨五入と思わない
-
金額・数量は仕様を確認
-
必要なら自前関数を作る