抱歉,如果问题比较简单,我找不到答案。
#include <iostream>
using namespace std;
int main()
{
double a(0);
double b(0.001);
cout << a - 0.0 << endl;
for (;a<1.0;a+=b);
cout << a - 1.0 << endl;
for (;a<10.0;a+=b);
cout << a - 10.0 << endl;
cout << a - 10.0-b << endl;
return 0;
}
输出结果:
0
6.66134e-16
0.001
-1.03583e-13
尝试使用MSVC9、MSVC10、Borland C++ 2010编译,最终都会出现约为1e-13的错误。在只有1000或10000个增量的情况下,出现如此显著的误差积累是否正常?