0.5
est une puissance (négative) de 2
, ce qui signifie qu'il est exactement représentable par le format à virgule flottante binaire IEEE-754. En toute précision, il est 0'01111110'00000000000000000000000
. Basé sur mes tests rapides avec des optimisations désactivées (-O0
), il s'avère que si y = 0.5 * x
, alors y + y == x
. Mais est-ce toujours garanti par la norme IEEE-754?Peut-on dire que c'est toujours vrai que 0.5 * x + 0.5 * x == x?
Je sais qu'en général, si n
est un pouvoir entier positif de 2
et m = 1.0/n
, y = m * x
, puis en ajoutant y
ensemble n
fois ne produit pas x
. Mais il semble que oui avec n = 2
.
Quelque chose me manque?
Copie possible de [Est-ce que le calcul à virgule flottante est rompu?] (Https://stackoverflow.com/questions/588004/is-floating-point-math-broken) – mehulmpt
@mehulmpt Cette question concerne environ 0.2 + 0.1! = 0.3', qui, étant donné que '0.2' et' 0.1' ne sont pas exactement représentables par un format à virgule flottante binaire est totalement évident. Je pense que vous ne comprenez pas la différence ici. – plasmacel