Maison > Java > javaDidacticiel > le corps du texte

Pourquoi la division de BigDecimals sans MathContext entraîne-t-elle une exception « Expansion décimale sans fin » ?

Susan Sarandon
Libérer: 2024-11-15 09:58:02
original
337 Les gens l'ont consulté

Why Does Dividing BigDecimals Without a MathContext Result in a

Exception d'expansion décimale sans fin dans la division de BigDecimals

Lors de la division de deux objets BigDecimal sans spécifier de MathContext, l'opération peut entraîner un Exception "ArithmeticException : expansion décimale non terminale ; aucun résultat décimal représentable exact".

En effet, le quotient de certaines divisions (comme 1 divisé par 3) a une expansion décimale infiniment longue. Lorsque la précision est définie sur 0 (valeur par défaut), le résultat exact doit être calculé. Si le quotient a une expansion non terminale, une exception est levée.

Solution

Pour résoudre ce problème, un MathContext avec une échelle et un mode d'arrondi spécifiques doivent être fournis . Le code suivant le démontre :

a.divide(b, 2, RoundingMode.HALF_UP)
Copier après la connexion

Dans cet exemple, l'échelle est définie sur 2 et le mode d'arrondi est défini sur RoundingMode.HALF_UP. Cela garantit que le résultat de la division est arrondi à une échelle spécifique et que l'exception est évitée.

Pour des informations plus détaillées, reportez-vous à la documentation Java 11 BigDecimal ou à des ressources externes comme cet article de blog.

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