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;
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);
Cette approche élimine les erreurs d'arrondi et produit le bon résultat :
System.out.println(commission + " = " + premium + " - " + netToCompany);
Sortie :
877.85 = 1586.6 - 708.75
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!