0.1 + 0.2が0.3にならない理由を数学的に解き明かす
Adding Floating-Point Decimals for Fun and Profit
多くのプログラマーが知るように、IEEE倍精度浮動小数点数では0.1 + 0.2は0.3にならず、0.30000000000000004となる。しかし、0.01の倍数を足し合わせる場合、誤差が生じないことも多い。本記事は、その誤差のパターンを数学的に分析し、浮動小数点数の加算で生じる誤差が最大1 ulpに収まることを証明する。さらに、誤差関数の周期性を利用して、図1のようなチェッカーボード模様が現れる理由を明らかにする。
浮動小数点数の加算では、結果は最大で1 ulpだけ答えからずれることがある。