読者です 読者をやめる 読者になる 読者になる

亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

銀行の丸め。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=4352

C#標準の四捨五入動作は、一般的な「四捨五入」ではないみたい。
5の時に上へ丸めるのではなく、丸めた結果が偶数になるように丸める。つまり。

以下の値を小数点1桁で四捨五入すると・・・
2.5 → 2
3.5 → 4
4.5 → 4
5.5 → 6

みたいな感じになる。
これを「銀行丸め」といったりするわけで、その理由は会議室にもあるとおり。

 えっと、四捨五入では、1〜4が小、5〜9が大の方向へ丸められます。ここで数字の数を数えると・・・小さくなるのは4つ、大きくなるのは5つあることがわかります。つまり、四捨五入を行うと大きい方へ丸められ、丸めた数の合計が元の値を超える場合があるのです。

なるほろ。納得。