Maison > Java > javaDidacticiel > le corps du texte

Comment déplacer avec précision les décimales dans un double sans erreurs d'arrondi ?

Mary-Kate Olsen
Libérer: 2024-11-28 00:15:12
original
404 Les gens l'ont consulté

How to Accurately Move Decimal Places in a Double Without Rounding Errors?

Comment déplacer les décimales dans un double sans erreurs d'arrondi

Pour déplacer une décimale dans un double, vous pouvez instinctivement multiplier par 0,1. Cependant, cela peut introduire des erreurs d'arrondi, car 0,1 n'est pas une représentation exacte en binaire.

Une manière plus précise

Au lieu d'utiliser 0,1, il est préférable d'utiliser 100, qui peut être représenté avec précision en binaire. Pour déplacer une décimale, divisez simplement par 100 :

double x = 1234;
x /= 100;
Copier après la connexion

Pourquoi l'arrondi est inévitable

Même avec cette approche, une erreur d'arrondi est toujours présente en raison des limitations de la virgule flottante représentation. Double.toString() effectue certains arrondis, mais éviter complètement les arrondis nécessite souvent l'utilisation de BigDecimal.

Comparaison entre x / 100 et x * 0.01

Notez que x / 100 et x * 0.01 ne sont pas identique en termes d’erreur d’arrondi. L'erreur d'arrondi dans la première expression dépend de la valeur de x, tandis que le 0,01 dans la seconde a une erreur d'arrondi fixe. Cela peut conduire à des résultats différents dans certains cas.

Conclusion

Comprendre les limites de la représentation à virgule flottante et utiliser des techniques appropriées peuvent garantir une gestion précise des décimales en double, minimisant ainsi les erreurs d'arrondi qui peuvent résultent d'opérations de multiplication imprécises.

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