對不起,如果愚蠢但無法找到答案。C++數字截斷錯誤
#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;
}
輸出:
6.66134e-16
0.001
-1.03583e-13
試圖與MSVC9,MSVC10,用Borland C++ 2010.它們在到達編譯它結束約1e-13的誤差。 只有1000,10000個增量有這麼大的誤差積累是否正常?
http://docs.sun.com/source/806-3568/ncg_goldberg.html – Anycorn 2010-05-07 01:27:34
http://home.comcast.net/~tom_forsyth/blog澄清。 wiki.html#[[A%20matter%20of%20precision]](不是我,heh) – 2010-05-07 01:51:12