Maison >Java >javaDidacticiel >Comment éviter les erreurs de précision dans la double arithmétique Java ?
Comment éliminer les problèmes de précision avec la double arithmétique Java
Dans certains scénarios, l'arithmétique à virgule flottante en Java peut entraîner des problèmes d'arrondi inattendus, tels que comme dans l'exemple de soustraction fourni :
double tempCommission = targetPremium.doubleValue()*rate.doubleValue()/100d; double netToCompany = targetPremium.doubleValue() - tempCommission; double dCommission = request.getPremium().doubleValue() - netToCompany;
Ici, le résultat souhaité pour dCommission est 877,85, mais il est calculé comme 877,8499999999999. Cet écart est dû aux limitations de précision de l'arithmétique à virgule flottante.
Pour résoudre ce problème, la solution optimale consiste à utiliser la classe java.math.BigDecimal. BigDecimal propose des calculs précis et contrôle efficacement la précision de l'arithmétique à virgule flottante. Voici comment vous pouvez l'implémenter dans l'exemple donné :
import java.math.BigDecimal; BigDecimal premium = BigDecimal.valueOf("1586.6"); BigDecimal netToCompany = BigDecimal.valueOf("708.75"); BigDecimal commission = premium.subtract(netToCompany); System.out.println(commission + " = " + premium + " - " + netToCompany);
Ce code donne le résultat souhaité :
877.85 = 1586.6 - 708.75
En utilisant BigDecimal, vous garantissez des calculs précis sans compromettre la précision.
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!