Maison > Java > javaDidacticiel > Comment puis-je éviter les erreurs d'arrondi lors du calcul avec des doubles en Java ?

Comment puis-je éviter les erreurs d'arrondi lors du calcul avec des doubles en Java ?

Susan Sarandon
Libérer: 2024-12-22 05:11:14
original
400 Les gens l'ont consulté

How Can I Avoid Rounding Errors When Calculating with Doubles in Java?

Résoudre les problèmes de double arrondi en Java

En Java, effectuer des calculs avec des nombres à virgule flottante double précision peut parfois conduire à des résultats inattendus en raison de erreurs d'arrondi. Pour résoudre ce problème, il est essentiel de comprendre l'arithmétique à virgule flottante de Java et d'adopter des solutions appropriées.

Lors de la soustraction de valeurs doubles, de petites erreurs d'arrondi peuvent s'accumuler, entraînant des calculs incorrects. Considérez l'extrait de code suivant :

double tempCommission = targetPremium.doubleValue()*rate.doubleValue()/100d;
double netToCompany = targetPremium.doubleValue() - tempCommission;
double dCommission = request.getPremium().doubleValue() - netToCompany;
Copier après la connexion

Dans cet exemple, le résultat de commission attendu est de 877,85, mais le calcul donne 877,84999999999999 en raison d'erreurs d'arrondi.

Solution : utiliser BigDecimal

Pour garantir des calculs précis, il est recommandé d'utiliser java.math.BigDecimal. Cette classe fournit une arithmétique à virgule flottante de précision qui répond aux limitations des types de données doubles.

Réécriture de la dernière ligne de code à l'aide de BigDecimal :

BigDecimal commission = premium.subtract(netToCompany);
Copier après la connexion

Cette approche élimine les erreurs d'arrondi et produit le bon résultat :

System.out.println(commission + " = " + premium + " - " + netToCompany);
Copier après la connexion

Sortie :

877.85 = 1586.6 - 708.75
Copier après la connexion

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