問題 No.1785
コンピュータにおける浮動小数点数の演算において、絶対値が非常に小さな数値同士を加算した結果が、本来の値よりも小さくなったり、最悪の場合はゼロになってしまう現象として、適切なものはどれか。
【正解の解説】
アンダーフロー
底の浅いコップに一滴の水をさらに垂らそうとして、コップの底に達してしまい結局何も受け止められなくなってしまうような状態です。コンピュータには扱える最小の数値の限界があり、それを下回ると強制的にゼロとみなされてしまうため、科学技術計算などで大きな誤差を生む原因になります。
スポンサーリンク
【その他の選択肢の解説】
オーバーフロー
アンダーフローが「小さすぎて消えてしまう現象」であるのに対し、こちらは「大きすぎて器からあふれ出てしまう現象」です。例えば、水槽に水を入れすぎてあふれてしまうような状態で、試験では大小の方向を逆にしてひっかけ問題としてよく出題されるため注意が必要です。
丸め誤差
割り切れない小数を途中で区切ることで発生する「細かな端数のズレ」を指します。今回の問題にある「値がゼロになってしまう極端な消失現象」とは異なり、計算のあらゆる場面で日常的に発生する誤差全般を指す用語であるため、現象の規模と結果の違いを区別して覚える必要があります。
情報落ち
「100万円の札束に1円玉を1枚混ぜても合計金額が100万円のまま変わらないように見える」現象と似ています。コンピュータが記憶できる有効桁数には限界があるため、桁数が違いすぎる数値を計算すると、小さな数値の情報が完全に削ぎ落とされて消えてしまうという特徴があります。