計算誤差とは

bit基本情報


誤差

コンピュータは8ビットや32ビットなどのようにあらかじめ決められたビット数の範囲で数をあらわします。そうすると「表現できる数の範囲」が決まります。
例えば、32ビット形式の浮動小数点数は、全体は32ビットで構成されています。
例えば(1÷3)10を計算したら、0.33333333………と続きますが、32ビットの中に収めようとすると、「極力それに近い値」にするしかありません。
このように演算した時に、有効桁数の関係で発生する誤差です。

丸め誤差

 ある桁の切上げ、切捨て、四捨五入したときに発生する誤差です

例)
1.10010100100100111110100100011111…

1.10010100100100111110100100011111…入らない部分は捨てる

打切り誤差

 計算や処理を、途中で打ち切った時に発生する誤差です

 例えば円周率のような延々と続く計算をあらかじめ定めた規則にしたがって途中で計算を打ち切った時に出る誤差です。

3.141592653535897932384626433……   延々に続く数字を

       3.14             で計算した時に出る誤差

情報落ち

 絶対値が遠い数値同士を加減算した時に小さい値の情報が無視されてしまうことによって発生する誤差です

例えば10進数で説明しますと、仮数部の有効桁数が4桁である「0.1234 × 10^2」と「0.1234 × 10^-2」の和を求めてみます。

0.1234 × 10^2 +0.1234 × 10^-2
         ↓
0.1234 × 10^2 + 0.00001234 × 10^2
         ↓
0.12341234 × 10^-2 となります
↓浮動小数点数なので、正規化を行います。
0.1234 × 10^2 
仮数部の有効桁数は4桁なので正規化した結果は「0.1234 × 10^2」です。
「0.00001234」は仮数部の有効桁数からはみ出してしまうため、なかったことにされてしまうのです。これが情報落ちです。

桁落ち

 絶対値が近い数字同士を加減さんした時に有効数字が大きく減ることによって発生する誤差のことです。

例)
1.2345−1.2344 = 0.0001 有効数字が5桁から1桁に減少します
この 0.0001 を、強引に有効数字5桁のように表すと、1.0000×10^−4となります。
小数点以下の4つの 0 は意味が無い0 です。
このような状況を「0埋めされる」と言うことがあります。実際、コンピュータでは浮動小数点数を使って計算を行っているため、0埋めが発生します。

コメント

タイトルとURLをコピーしました