各種の数値誤差について。
桁数の制約に起因する誤差。
格納先の桁数への丸めにより発生する誤差。
例えば、0.1 は 2 進数では循環小数 0.0001(1001) になる。そのため、有限のビット列には収まらない。入りきらない桁については四捨五入や切り捨てなどの処理が必要になる。
各種の算術演算 (加減乗除) に固有の丸めによる誤差。
加減算での絶対値の減少により発生する誤差。
演算による結果の最上位桁が左辺や右辺のそれより右にずれる事で発生する。
これは近い値どうしでの減算、または絶対値が近い正の値と負の値との加算において、著しく有効桁数を減少させてしまう。絶対誤差だけは小さいが、この後に絶対値の大きな値を掛けた場合などはそれすらも致命的になる。
加減算での桁合せにより発生する誤差。
加減算において、絶対値の小さい側の下位のビット列は有効桁でないため無視される。
絶対値の差が大きいほど無視されるビット数も多くなる。ただし、前述のとおり単体の演算では有効桁数への影響はない。問題が顕在化するのは、大きな値に小さな値を何度も加減算するような場合である。
乗除算の無効桁の丸めにより発生する誤差。
乗除算では有効桁数も減らず、一部のビットが結果に全く影響を与えなくなる事もない。
そのため、桁落ちや情報落ちに比べると、問題になる事は少ない。
無限級数の打切りに起因する誤差。
Taylor 展開などによる無限級数展開をそのままアルゴリズムにすると、無限ループになってしまう。そこで、誤差が十分に小さくなったと判断した時点で処理を打ち切る。この時の誤差が打切り誤差である。