【基礎理論】計算機が抱える限界!「丸め誤差」の仕組み|情報処理問題1000本ノック
コンピュータは無限に続く数値を扱うことができません。限られた桁数で数値を表現しようとしたときに発生する「丸め誤差」の性質を攻略しましょう。
1. 問題:数値計算における誤差の種類
【 問題 】 数値計算において、指定された有効桁数やビット数に収めるために、最小桁より下の部分を四捨五入、切り捨て、または切り上げることによって生じる誤差を何と呼ぶでしょうか?
ア、丸め誤差 イ、打切り誤差 ウ、桁落ち エ、情報落ち
2. 正解:数値計算に関する正解
正解: ア、丸め誤差
3. 解説:入り切らない「端数」の処理
コンピュータのメモリは有限です。そのため、計算結果が非常に長い小数になった場合、どこかの桁で「丸める(端数を処理する)」必要があります。
■ 典型的な例
・1 ÷ 3 = 0.333333... と無限に続く値を、小数第3位で丸めて「0.333」とした場合、本来の値との間に 0.000333... の差が生まれます。これが丸め誤差です。
■ 2進数特有の問題
・人間にとってキリの良い「0.1」のような数値も、コンピュータの内部(2進数)では無限小数になります。このため、単純な加算を繰り返すだけでも丸め誤差が蓄積することがあります。
★ 打切り誤差:計算を途中で打ち切ることで生じる誤差(例:無限級数の計算を100項で止める)。
★ 桁落ち:値が非常に近い数同士の引き算で、有効桁数が激減すること。
★ 情報落ち:極端に大きい数と小さい数を足したとき、小さい数が無視されること。
1. 理解のコツ: 「丸める(Round)」という言葉の通り、四捨五入などで数値を近似値に置き換えた際に生じる「理想と現実のズレ」のことです。
2. 試験対策の視点: 誤差の定義を問う問題は頻出です。「四捨五入」「切り捨て」「桁数制限」といったキーワードがあれば、丸め誤差を選択しましょう。また、浮動小数点数の構造と関連付けて出題されることもあります。
4. まとめ
「限られた桁数に収めるための端数処理で生じる誤差」。これが丸め誤差です。プログラミングやシステム設計において、わずかな誤差が大きな不具合に繋がる可能性があることを意識しておきましょう。