Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Excel VBA】Round() の誤差問題

銀行丸めと四捨五入の違いを理解する

「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
 
 
MyRound(2.5)
' → 3
 

👉 金額計算などでは 必ず確認必須 です。


なぜ銀行丸めが使われるのか?

  • 大量計算時の誤差を平均化するため

  • 会計・統計では一般的

👉 ただし 日本の業務感覚では違和感が出やすい


実務での注意点まとめ

  • Round() = 四捨五入と思わない

  • 金額・数量は仕様を確認

  • 必要なら自前関数を作る