丸め誤差、打ち切り誤差、情報落ち、桁落ちの意味と例を解説します。情報落ちの対策も紹介します。
丸め誤差とは
丸め誤差の例
「$0.1212121212$ を $0.12$ とみなして計算する」
のように、桁数が多い小数を、途中で四捨五入したり、切り捨て・切り上げする場合。
「円周率を $3.14$ とみなして計算する」
のように、無限に続く小数を有限桁に丸める場合。
打ち切り誤差とは
打ち切り誤差の例
「$1+\dfrac{1}{2}+\dfrac{1}{4}+\dfrac{1}{8}+\dots$ という無限級数を計算したいが、$\dfrac{1}{8}$ までで打ち切る」
※計算に使える時間は有限なので、無限級数を1項ずつ計算する場合には、必ずどこかで打ち切る必要があります。
情報落ちとは
情報落ちの例
「$1.0000+0.0001$ を計算したいが、有効数字5桁で計算すると計算結果が $1.0000$ になってしまい、足し算の意味がない」
情報落ちの対策
絶対値の小さい順に計算していくことで、情報落ちを防ぐことができる場合があります。
例えば、
$1.0000+0.0001+0.0001+\dots +0.0001$
のように、$1$ に $0.0001$ を $10000$ 回足し算する場合を考えます。
理論的な計算結果は $2.0000$ ですが、左から有効数字5桁で順々に計算していくと、情報落ちのせいで常に $1.0000$ のままです。
これを、数字が小さい方から順に、
$0.0001+0.0001+\dots +0.0001+1.0000$
と並べ替えて左から有効数字5桁で順々に計算していくと、きちんと $0.0001$ ずつ増えていき、最終的に
$1.0000+1.0000=2.0000$
と正しく計算できます。
桁落ちとは
桁落ちの例
「$1.2345-1.2344$ を計算したいが、答えは $0.0001$ になってしまい、有効数字が5桁から1桁に減少する」
この $0.0001$ を、強引に有効数字5桁のように表すと、$1.0000\times 10^{-4}$ となりますが、小数点以下の4つの $0$ は意味が無い $0$ です。
このような状況を「0埋めされる」と言うことがあります。実際、コンピュータでは浮動小数点数を使って計算を行っているため、0埋めが発生します。
参考:桁落ちの回避
次回は 2の補数、1の補数の意味と負数の変換方法 を解説します。