Excelや多くのプログラミング言語に用意されている「ROUND」関数。
私は、稀によく見る、くらいの頻度で目にする気がします。
今回はこのROUND関数に隠された落とし穴に関する注意喚起の記事になります。
「丸め」をおさらい
「端数処理」や「丸め」と言ったりしますが、
「数値を一定の規則に従って、近似値で表現すること。」
という説明が個人的にしっくりきます。
よく見る丸めは切り捨てや切り上げ、四捨五入ですね。
中には銀行丸め(偶数丸め)というものもあり、
これが今回の注意喚起に繋がっていきます。
言語によって変わる「5」の扱い
端的に言うと、同じように見えるROUND関数でも、
Excelは四捨五入、VBAは銀行丸めで処理されます。
例えばExcel(四捨五入)では、
1.1や1.4は切り捨てて1に、1.5や1.9は切り上げて2に丸められます。
VBA(銀行丸め)の場合も、
1.4が切り捨て、1.6が切り上げというのは変わりません。
問題は「5」を丸める時で、銀行丸めでは最も近い偶数に丸められます。
つまり0.5は0、1.5は2、2.5は2といった丸め方になります。
ROUNDという関数名が同じでも、処理が大きく変わるため注意が必要です。
まとめ
ROUND関数を使う時に気を付けてほしいのはもちろんですが、この話で、
・見た目が似てるものほど注意せよ!
・初めて触るものは必ず検索せよ!
ということ伝えたくて記事にしました。
知識が付けば付くほど、持っている知識を活かしてこなしたくなるものです。
その結果早合点して沼にハマる、なんてことにならないよう
いつまでも「疑ってかかる姿勢」は忘れずにいたいですね。