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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-28 00:15:12427parcourir

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;

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!

Déclaration:
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