Maison > Java > javaDidacticiel > Comment éviter les erreurs de précision dans la double arithmétique Java ?

Comment éviter les erreurs de précision dans la double arithmétique Java ?

Susan Sarandon
Libérer: 2024-12-10 00:38:08
original
332 Les gens l'ont consulté

How to Avoid Precision Errors in Java Double Arithmetic?

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;
Copier après la connexion

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);
Copier après la connexion

Ce code donne le résultat souhaité :

877.85 = 1586.6 - 708.75
Copier après la connexion

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!

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