(2e-10+2e+10)-2e+10と 2e-10+(2e+10-2e+10)の二つの実数の計算でした。 数学的には、二つの計算結果は等しくなるはずですが、 計算結果は等しくならなかったはずです。
計算機内部では、
という表現方法が用いられています。
nを仮数部とよび、mを指数部と呼びます。もちろん、それぞれは有限です。
従って、Pascalの実数のもつ精度も有限です。そのために
小さな実数2e-10と、それと比較して圧倒的に
大きな実数2e+10とを足し算してしまうと、
結局、2e+10になってしまいます。
このような理由により、
2e-10+(2e+10-2e+10)が、2e-10になるのに対して、
(2e-10+2e+10)-2e+10は、0.0になってしまいます。
Pascalという言語に限らず、計算機の上での実数計算はどうしても誤差が入っ てきてしまいます。計算機上での実数計算をするときには誤差のことを常に気 にとめましょう。