コンピュータの計算精度
コンピュータはいいかげんである
コンピュータは計算を速く正確に行う機械だというイメージがありますが、
実は不正確な計算しかできません。
特に大きな数値や小さな数値の計算には注意が必要です。
計算例
以下の例では
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