【基礎理論】巨額な数値と微小な数値の足し算で小さい方が消える!「情報落ち」|情報処理問題1000本ノック
コンピュータにおける数値表現と計算誤差の超重要テーマ。絶対値の極端に異なる数値同士を加減算した際、小さい方の数値の情報が計算結果に反映されず消えてしまう「情報落ち」を攻略しましょう。
1. 【 問題 】:基礎理論(数値表現と計算誤差)
【 問題 】 浮動小数点数の計算で発生する誤差に関する記述です。絶対値が極端に大きい数値と極端に小さい数値の足し算(加算)や引き算(減算)を行った際、小さい方の数値が指数部を揃える過程で有効桁数の範囲外に押し出され、計算結果に反映されなくなってしまう現象は、次のうちどれか。
(ア)丸め誤差
(イ)情報落ち(Loss of Significance)
(ウ)桁落ち
(エ)打ち切り誤差
2. 正解:
正解:(イ)情報落ち(Loss of Significance)
3. 解説:「巨大な数に小さな数を足しても、無視されて消えてしまう!」
情報落ち(Loss of Significance)は、絶対値があまりにも大きくかけ離れた2つの浮動小数点数を足し引きしたときに生じる計算誤差です。
例えば、10進数で有効数字が6桁のコンピュータで、$10^8$(100,000,000)に $1$ を足す計算を行う場合を考えます。浮動小数点数の加減算では最初に「指数部(桁)」を大きい方に揃えるため、$1$ は $0.00000001 \times 10^8$ と変換されますが、有効桁数が6桁しかないため、あふれた末尾の数値が切り捨てられ、$10^8 + 1 = 10^8$ となり、足したはずの「1」という情報が完全に消滅してしまいます。
| 誤差の名称 | 発生のトリガー(引き金) | 現象・結果 |
|---|---|---|
| (イ)情報落ち | 「絶対値が極端に離れた2数」の加減算 | 小さい方の数値が無視され、計算結果に反映されない。 |
| (ウ)桁落ち | 「値のほぼ等しい2数」の引き算 | 上位桁が打ち消し合い、有効桁数が大幅に減る。 |
| (ア)丸め誤差 | 指定桁数枠へ収める端数処理 | 四捨五入・切捨て・切上げによる微小なズレ。 |
| (エ)打ち切り誤差 | 無限計算や繰り返し計算の途中終了 | 計算処理を途中で打ち切ることで生じる誤差。 |
1. 理解のコツ: 「巨大な貯金箱」で例えてみましょう。
・10億円が入っている巨大な金庫に、1円玉を1枚だけ入れても、表示パネル(桁数制限)が「10億円」の単位までしか表示できなければ、追加した1円はカウントされず消えてしまいます。
・このように「大きい数に小さな数を足しても、桁が小さすぎて無視される」のが情報落ちです。
・※対策として、大量の数値を合計する場合は「値の小さなものから順番に足し込んでいく(小計を先に作る)」ことで情報落ちを防ぐことができます。
2. 試験対策の視点: 基本情報技術者試験や応用情報技術者試験の計算誤差問題で「桁落ち」と並ぶ超超定番のターゲットです。
問題文に「絶対値が極端に異なる」「大と小の加減算」「小さい方の数値が計算結果に反映されない」「小さい方から順に足す」といった文言が出たら、迷わず情報落ちを選択しましょう!
4. まとめ
「絶対値が極端に異なる数値同士の加減算で、小さい方の数値の情報が消えてしまう現象」。これが情報落ちです。「値のほぼ等しい数値の引き算で有効桁数が激減する『桁落ち』」との発生条件の違いを完全にマスターしておきましょう!