数値演算と情報落ち誤差
コンピュータでは限られた桁数でデータを表現するため、表現しきれない数値が出てくることもあります。
このようなことから真の値と計算結果で出てくる数値に誤差が出てしまうことがあり、その誤差の一つが情報落ち誤差です。
以下、具体的に説明します。
情報落ち誤差とは
絶対値が非常に大きい数値と非常に小さい数値の和や差を求めた際、有効桁数の関係で下位の小さい桁数が切り捨てられ計算結果に反映されないことから起こる誤差です。
簡潔にいうと「でかい数字と小さい数字で引き算、足し算したら下の桁が切り捨てられた」ことにより起こる誤差です。
例 123.456+0.00000001=123.456
計算結果が変わってない!! (有効桁数が6桁だったので、それより小さい0.00000001は反映されない)
コンピュータでは表示できる桁数が決まっているため、もとの有効桁数を大幅に超えた桁数が結果に帰ってくると表示しきれないことがあります。
上記の計算は本来なら123.45600001になるはずですが、足した数字が小さすぎて計算結果に表示できてない状態です。
一度の計算ではあまり重大ではないかもしれませんが、情報落ち誤差になっている計算結果を使って掛け算などの計算を続けていくと誤差が蓄積し、かなりの誤差が生じる場合もあります。
情報落ちを回避するためには、絶対値が大きく異なる数値の足し算・引き算を行う場合、小さい数から順番に足し算・引き算を行い、可能な限り情報落ちを回避する方法などがあります。
いつ必要になる?
Javaなどのプログラミングをしている場合double型など以上に大きい数字まで表示できるようになっていますし、他の誤作同様プログラミングの場面で何度も出てくるようなものではないですが、よきせぬエラーの発生につながることもあるため知っておくべきです。
/* 例 double型でも十分に表示可能*/
double d = 0.00000000000000000000000000001;
またIT系資格である基本情報技術者試験や応用情報技術者試験などでは試験内容に誤差の問題がそこそこでてくるため、受験する場合は数値の誤差は全般知っておくべきです。