コンピュータの計算精度

コンピュータはいいかげんである

コンピュータは計算を速く正確に行う機械だというイメージがありますが、 実は不正確な計算しかできません。 特に大きな数値や小さな数値の計算には注意が必要です。

計算例

以下の例では C 言語で作成したプログラムによって 計算結果を小数点以下 10 桁まで表示しています。

0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 = 1.0000001192
0.1 を 10 回加算した結果
0.01 + 0.01 + ... = 0.9999993443
0.01 を 100 回加算した結果
0.001 + 0.001 + ... = 0.9999907017
0.001 を 1000 回加算した結果
0.0001 + 0.0001 + ... = 1.0000535250
0.0001 を 10000 回加算した結果
0.00001 + 0.00001 + ... = 1.0009901524
0.00001 を 100000 回加算した結果
1.0 / 3.0 = 0.3333333433
1.0 を 3.0 で割り算した結果

コンピュータが扱える数の範囲は決まっています。 その範囲を超える計算をしようとすると結果がおかしくなります。 現在、よく使われているパソコンで使用できる整数の範囲は -2147483648 から 2147483647 までなので、以下のような計算結果が出てしまいます。

2147483647 + 1 = -2147483648
計算結果がいきなりマイナスになります。
-2147483648 - 1 = 2147483647
逆に計算結果がプラスになってしまいます。

参考


Prev | Next
Home | Contents
Mail