コンピュータが扱う数値表現には限界があり、計算には必ず『誤差』が伴います。AP科目Aで固定/浮動小数点・誤差の種類は必出です。
数値表現は『固定小数点』と『浮動小数点』の2種類です。
固定小数点は小数点の位置が固定、浮動小数点は IEEE 754 形式で『仮数部 × 2^指数部』で表します。
誤差ってどんな種類があるんだろ?
代表的な4種: ① 桁落ち (近い値同士の引き算で有効桁が減る)、② 情報落ち (大きい値と小さい値の加算で小さい値が消える)、③ 打切り誤差 (無限級数を途中で打ち切る)、④ 丸め誤差 (有限桁で表す際の四捨五入)。
桁落ちって、たとえば 1.001 - 1.000 = 0.001 みたいな感じですかぁ?
そうです。
元の数値が 4桁の有効桁を持っていても、引き算すると有効桁が 1桁になってしまう現象ですね。
AP では『桁落ちが発生する計算式』を選ぶ問題が頻出します。
情報落ちは『1.0e10 + 1.0e-10 = 1.0e10』のように、大きい値に小さい値を足しても変わらない現象。
浮動小数点の精度限界が原因よ。
対策ってあるの?
(1) 桁落ちは式を変形する (例: a²-b² → (a+b)(a-b))、(2) 情報落ちは小さい値同士から先に加算、(3) 倍精度浮動小数点 (double) を使う、(4) 任意精度演算ライブラリを使う、などの対策があります。
確認クイズ
浮動小数点演算で『情報落ち』が発生する典型的なケースとして、最も適切なものはどれか。
- 近い値同士の引き算で有効桁が大幅に減る
- 値の絶対値が大きく異なる数値の加減算で、絶対値の小さい数値の情報が失われる
- 無限級数の和を有限項で近似する
- 10進小数を2進浮動小数点で表現する際の四捨五入
こたえを見る
正解: 2. 値の絶対値が大きく異なる数値の加減算で、絶対値の小さい数値の情報が失われる
情報落ちは『大きい値と小さい値を加減算する際に小さい値が浮動小数点の精度範囲外になり消失する』現象。1 は桁落ち、3 は打切り誤差、4 は丸め誤差。