« チーム力 | メイン | 中学野球部が芝生の手入れ »

コンピュータは計算を間違わないか?

    H24.08.10%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB.jpg
 コンピュータ(以下CPという)は電子計算機と呼ばれています。名前からして計算のプロ、計算を専門とする機械です。当然私たちが行う計算とCPでだした計算結果が違ったとき、どちらを信用するかといえば、CPと答える人が大半だと思います。しかし、そうとは限らないのです。
 私たちが扱う数は基本的に10進数です。ところがCPはご存じのように2進数です。電気のOFFとON、0と1ですべての数を、実は数だけではありませんが、表しています。そこからくる弱点があります。整数はいいのですが、小数が苦手なのです。1/10は0.1ですが、2進数では循環2進数になり無限に繰り返されます。有限量では表せません。そこで、「丸め」という操作を行いますので誤差が生じます。この操作を繰り返せば繰り返すほど誤差が大きくなるという次第です。CPが計算を間違えるということになります。4.4ー4.3も4.3ー4.2も同じ0.1ですがエクセルなどの計算ソフトでは前者の方が大きくなります。関数を使って比較してみてください。イコールにはならないはずです。同じ0.1に見えても、内部データには違いがあります。CPは万能ではありません。原理的に計算できない問題もあるのです。連続量であるアナログを0と1のデジタルで表現しよとするところに無理があるのかもしれません。興味のある人は調べてみてはどうでしょうか。
※この現象は Excel の問題によって生じているものではありません。米国電気電子技術者協会 ( IEEE)754 浮動小数点に関する規格に則り、数値をバイナリ形式で格納していることから生じています。