Les problèmes de précision avec les doubles calculs Java : une étude de cas
Le défi se pose lorsqu'il s'agit de l'arithmétique à virgule flottante double précision en Java. Comme illustré dans l'extrait de code, la soustraction de valeurs arrondies peut conduire à des résultats inattendus en raison de limitations de précision inhérentes.
Plus précisément, le problème provient d'une chaîne de calculs :
Le résultat attendu pour dCommission est 877.85, mais le résultat est tronqué en raison des arrondis accumulés erreurs.
Apprivoiser la bête de précision : présentation de BigDecimal
Pour résoudre ce problème de précision, Java fournit la classe java.math.BigDecimal, qui offre une arithmétique décimale de précision arbitraire .
Dans ce cas, le code serait modifié comme suit :
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);
Avec BigDecimal, le résultat est calculé et affiché avec précision :
877.85 = 1586.6 - 708.75
Conclusion
Lorsqu'il s'agit de données sensibles à la précision Pour les calculs en Java, il est crucial d'exploiter BigDecimal pour éviter les pièges de l'arithmétique à virgule flottante. En adoptant ses capacités de précision arbitraire, les développeurs peuvent garantir des résultats précis et fiables, même dans des scénarios complexes comme celui décrit ci-dessus.
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!