Maison > Java > javaDidacticiel > Pourquoi la double soustraction en Java conduit-elle à des résultats inexacts et comment BigDecimal peut-il résoudre ce problème ?

Pourquoi la double soustraction en Java conduit-elle à des résultats inexacts et comment BigDecimal peut-il résoudre ce problème ?

Linda Hamilton
Libérer: 2024-12-02 01:05:11
original
649 Les gens l'ont consulté

Why Does Double Subtraction in Java Lead to Inaccurate Results, and How Can BigDecimal Solve This?

Comment résoudre un problème de double arrondi Java

Lorsque vous travaillez avec des doubles, des inexactitudes de précision peuvent survenir, conduisant à des résultats de calcul inattendus. L'un de ces problèmes est l'arrondi qui se produit lors d'une double soustraction, comme illustré dans l'extrait de code fourni.

Dans cet exemple, la soustraction de tempCommission de targetPremium donne une valeur de 708,75, alors que la valeur attendue est de 708,76. Cette différence est due à l'utilisation de nombres à virgule flottante double précision, qui présentent des limites inhérentes à leur précision.

Pour résoudre ce problème et garantir des calculs corrects, pensez à utiliser la classe java.math.BigDecimal, qui fournit une arithmétique décimale précise. BigDecimal offre un meilleur contrôle sur la précision des opérations à virgule flottante, éliminant les erreurs d'arrondi associées à la double soustraction.

Dans l'extrait de code révisé, BigDecimal est utilisé pour effectuer la soustraction de netToCompany de premium, ce qui donne le résultat attendu. valeur de 877,85. Cela démontre l'efficacité de BigDecimal dans la gestion de calculs décimaux précis, éliminant les problèmes d'arrondi rencontrés avec les doubles :

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 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