Dans un programme Java, une boucle additionnant la valeur 0,04 à elle-même 25 fois donne des résultats inattendus entre la 6e et la 10e itération. Au lieu d'incrémenter de 0,04 comme prévu, la somme est arrondie à des valeurs incorrectes telles que 0,24000000000000002 et 0,39999999999999997.
Ce comportement étrange est dû à la nature de l'arithmétique à virgule flottante. Les valeurs à virgule flottante sont représentées au format binaire à virgule flottante, qui ne peut pas représenter exactement plusieurs fractions décimales. Au lieu de cela, ils stockent les valeurs sous forme de sommes de puissances négatives de deux.
Par exemple, 0,5 peut être exactement représenté par 2^-1 et 0,125 par 2^-3. Cependant, la valeur décimale 0,96 ne peut pas être représentée avec précision comme une somme de puissances négatives de deux, ce qui entraîne une légère erreur d'arrondi lorsqu'elle est stockée dans une variable à virgule flottante.
Lors de l'exécution d'opérations arithmétiques sur des valeurs à virgule flottante, ces erreurs d'arrondi peuvent s'accumuler, faisant s'écarter la somme de la valeur attendue. C'est pourquoi la somme de 25 itérations de 0,04 ne reste pas un multiple entier exact de 0,04.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!