銀行まるめ

「四捨五入」でも、「切り捨て」でも「切り上げ」でもない端数処理の方法をご存知だろうか。



仕事上で「銀行まるめ」という言葉に出合った。



銀行やIT系の仕事に就いている人なら当たり前かもしれないけれど、初めて出合った言葉と概念にしばし感慨に耽ってしまった。



そもそも「まるめ」というのは"rounding"=「丸める」という英語から来ていて、与えられた数字の端数を整数に置き換える処理のこと。



一般的によく使われるのは「四捨五入」や「切り捨て」「切り上げ」で、特殊な丸め方に「四捨六入」「五捨六入」「スウェディッシュラウンディング」「乱数まるめ」などがあるという。



「銀行まるめ」は「最近接偶数への丸め」や「五捨五入」「偶捨奇入」とも呼ばれ、ウィキペディアでは以下の説明がなされていた。



最近接偶数への丸め
最近接偶数への丸め (round to the nearest even; RN) は、端数が0.5より小さいなら切り捨て、端数が0.5より大きいならは切り上げ、端数がちょうど0.5なら切り捨てと切り上げのうち結果が偶数となる方へ丸める。JIS Z 8401で規則Aとして定められていて、規則B(四捨五入)より「望ましい」とされている。
バイアスがないのが特徴である(データがランダムなら)。このため、多数足し合わせても丸め誤差が累積しない。
単に「偶数への丸め」「最近接丸め」とも呼ばれる。JISで定められていることから「JIS丸め」、あるいは同様にISO-31で定められていることから「ISO丸め」ともいう。英語では、誤差の累積を嫌い銀行家が好んで使ったため「銀行家の丸め (bankers’ rounding)」ともいう。5が切り捨てられたり切り上げられたりするので「五捨五入」と呼ばれたり、偶数の上が切り捨てられ奇数の上が切り上げられるので「偶捨奇入」と呼ばれたりもする。以上



これだけだとわかりづらいかもしれないので例を挙げてみよう。



1.3は1、2.7は3、10.3は10、27.8は28。ここまでは四捨五入と変わらない。ポイントは0.5の扱いである。(0.1の単位を扱う場合)



例1) 1.5は1、2.5は3、3.5は3、4.5は5
例2) 15,000は10,000、25,000は30,000、35,000は30,000、45,000は50,000



お分かりだろうか。



ウィキペディアの説明の最後にもあるように、「四捨六入」で五はその前の桁が奇数であれば「切り捨て」、偶数であれば「切り上げる」という仕組み。多くの数を扱えば扱うほど切り上げ、切り捨てよりも誤差が少なくなる。



大きな数字を扱う銀行家が好んで使う丸め方ということで「銀行まるめ」と呼ぶのだという。



「謂われ」が面白いし、端数を「丸める」という表現もユニークだ。でも、一番興味深いのは論理的に正しいと思われる方法が殆んど拡がっていないこと。



世の中には丸めなければならないことが山ほどありそうだ。