【まるめごさ】
丸め誤差 とは?
💡 0.1 + 0.2 ≠ 0.3、コンピュータの小数は完璧じゃない
📌 このページのポイント
- 小数を2進数で表現するときに生じる微小な計算誤差
- 0.1のような10進数の単純な小数も2進数では循環小数になる
- 計算を繰り返すと誤差が蓄積して大きな問題になることがある
- 金融計算では整数演算や専用の10進型を使って回避する
0.1 + 0.2 が 0.3 にならないって本当なの?
本当だよ!多くのプログラミング言語で 0.1 + 0.2 を計算すると 0.30000000000000004 みたいな結果になるんだ。これが丸め誤差の典型例だよ。
なんでそんなことが起きるの?
コンピュータは2進数で小数を表すんだけど、10進数の0.1は2進数だと0.0001100110011……と無限に続く循環小数になるんだ。有限のビット数で切り詰めるから、微小な誤差が出てしまうんだよ。
それって困る場面があるのかな?
大アリだよ!お金の計算で1円ズレたら大問題だし、科学計算で何百万回も計算を繰り返すと誤差がどんどん膨らむことがある。湾岸戦争ではパトリオットミサイルの時刻計算の丸め誤差で迎撃に失敗した事例があるんだ。
どうやって対策するの?
まとめ:ざっくりこれだけ覚えればOK!
「丸め誤差」って出てきたら「コンピュータの小数計算で生じるズレ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Rounding Error」 = 丸め(四捨五入)による誤差
💬 数値を有限桁に丸める(Round)ときに出る誤差だからこの名前なんだよ