Maison > Java > javaDidacticiel > Pourquoi une boucle additionnant 0,04 en Java entraîne-t-elle des erreurs d'arrondi inattendues ?

Pourquoi une boucle additionnant 0,04 en Java entraîne-t-elle des erreurs d'arrondi inattendues ?

Susan Sarandon
Libérer: 2024-11-19 14:00:04
original
562 Les gens l'ont consulté

Why does a loop summing 0.04 in Java result in unexpected rounding errors?

Erreurs d'arrondi à virgule flottante en Java

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal