3Fermer5
PpHdLe 10/05/2013 à 10:11
c'est quoi ton compilateur, ton langage, et ton mode d'arrondi dans les calculs ?

Si on a:
x = 1666.42859;
y = 1.4;
z = x *y

en précision flottante (p=24 bits) si la multiplication se fait avec arrondi au plus proche :
x=0.1101000001001101101101110E11 (convertion base 10 vers base 2 inexacte)
y=0.1011001100110011001100110E1 (convertion base 10 vers base 2 inexacte)
z=0.1001000111010000000000000E12 (avec arrondi à la valeur au dessus, tombant sur un entier)
soit
x=1.66642859e+03 y=1.39999998e+00 z=2.333e+03
soit (int)z = 2333

en précision flottante (p=24 bits) si la multiplication se fait avec arrondi vers zéro :
x=0.110100000100110110110111E11
y=0.101100110011001100110011E1
z=0.100100011100111111111111E12
soit
x=1.66642859e+03 y=1.39999998e+00 z=2.33299976e+03
soit (int)z = 2332

tu peux arrondir au lieu de tronquer sinon. M'enfin tout dépend de ton besoin à la base. Quel est-il ?