Maison > Java > javaDidacticiel > Pourquoi le type « double » de Java produit-il des résultats inexacts dans les calculs financiers ?

Pourquoi le type « double » de Java produit-il des résultats inexacts dans les calculs financiers ?

Susan Sarandon
Libérer: 2024-12-06 12:51:14
original
328 Les gens l'ont consulté

Why Does Java's `double` Type Produce Inaccurate Results in Financial Calculations?

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 :

  • tempCommission : 78.75. (arrondi)
  • netToCompany : 708,75 (787,5 - 78.75)
  • dCommission : 877.84999999999999 (1586.6 - 708.75)

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

Avec BigDecimal, le résultat est calculé et affiché avec précision :

877.85 = 1586.6 - 708.75
Copier après la connexion

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!

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