コンピュータ上で実数を表現する際には浮動小数点数を使うのですが、浮動小数点数の計算では誤差が発生します。 簡単な例を見てみます。 #include <cstdio> int main(void) { float a = 0.0; for(int i=0; i<10000; ++i) a += 0.01; printf("%.10f\n", a); } という0.01を10000回足すプログラムを実行すると結果は100.0029525757となり、期待される100.000000000に比べて0.003ほどの誤差が発生しています。 浮動小数点数計算での誤差を抑える一番簡単な方法はfloatではなくdoubleなどのより精度の高い型を使って計算精度を上げることですが、どうしても限界はあります。 他にも問題ごとにテクニックは存在しますが、誤差を完全に無くすことはできません。 正確な計算のためには誤
