浮動小数点の誤差は、IPA 午前四択で繰り返し出題される定番です。計算そのものより『丸め誤差・打切り誤差・桁落ち・情報落ちの 4 つをどう見分けるか』が最大のつまずきで、特に桁落ちと情報落ちの取り違えが頻発します。発生する場面で型として整理すれば、確実な得点源に変えられます。
前提として、浮動小数点表現は数値を『符号部・指数部・仮数部』の 3 つに分けて表します(例: ±仮数部 × 基数^指数部)。仮数部の最上位桁が 0 にならないよう桁を詰める操作を正規化といい、有効桁数を最大限に使うために行います。仮数部のビット数には限りがあるため、表しきれない下位の桁が必ず出ます——これが各種誤差の発生源です。
本体は 4 つの誤差の定義です。①丸め誤差: 仮数部で表せる桁数を超えた部分を四捨五入・切り捨て・切り上げで処理することで生じる誤差。②打切り誤差: 級数や反復計算など本来は無限に続く計算を、途中で打ち切る(有限回で止める)ことで生じる誤差。③桁落ち: 値がほぼ等しく符号が同じ 2 数の引き算で、上位の桁が相殺されて消え、有効桁数が激減する誤差。④情報落ち: 絶対値が大きく異なる 2 数の加減算で、小さい数の下位桁が大きい数の仮数部に収まりきらず無視されてしまう誤差。
仕上げは桁落ちと情報落ちの見分け方です。決め手は『どんな 2 数を演算したか』です。桁落ちは“近い大きさの数どうしの引き算”で起き、結果の有効桁が大幅に減ります(例: 1.234566 − 1.234565)。情報落ちは“大きさが極端に違う数どうしの足し算・引き算”で起き、小さい方が無視されます(例: 100000 + 0.0001)。『近い数の引き算なら桁落ち、大小差が極端な加減算なら情報落ち』と場面で覚えるのが最短です。丸め誤差は表現桁数の制約、打切り誤差は計算回数の制約、と原因の違いで区別します。
練習問題: 「ほぼ等しい 2 つの数を引き算したら有効数字が大きく減ってしまった」のは 4 つの誤差のどれでしょうか。また「非常に大きな数に非常に小さな数を加えたら、小さな数が結果に反映されなかった」のはどれでしょうか(ヒント: 前者は近い数どうしの引き算、後者は大小差が極端な加算)。過去問AI の AI コパイロットに『この浮動小数点の誤差の問題の解き方を教えて』と聞くと、4 つの誤差の見分け方が場面ごとに表示されます。