Problème de précision avec les long double
Bonjour à vous tous;
Alors voila un code qui me fait des migraines:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
#include <iostream.h>
#include <iomanip.h>
int main()
{
long double a,b,c,d;
a = 1;
b = 1e-09;
c = a - b;
d = 10*( a - b );
cout << " a = "<< a ;
cout <<"\n b = "<< b ;
cout <<"\n c = a - b = "<< c ;
cout <<"\n d = 10*( a - b )= "<<d<<"\n";
}
|
mon problème est qu'il me donne a - b = 1 et 10*(a - b) = 10 alors qu'il devrait me donner 0.999999999 et 9.99999999.
J'ai même essayé b = 1 - 1e-09 puis evaluer 1/(a-b), et alors il me donne 1/(a-b) = inf.
Quel est le problème et son remède.
Merci.