scusate se stupido ma non è stato possibile trovare una risposta.Errore di troncamento numerico 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;
}
uscita:
6.66134e-16
0,001
-1.03583e-13
Provato compilarlo con MSVC9, MSVC10, Borland C++ 2010. Tutti loro arrivare in termina con l'errore di circa 1e-13. È normale che si verifichi un accumulo di errore così significativo con incrementi di 1000, 10000?
http://docs.sun.com/source/806-3568/ncg_goldberg.html – Anycorn
http://home.comcast.net/~tom_forsyth/blog. wiki.html # [[A% 20matter% 20of% 20precision]] (non io, heh) –