Maison > Java > javaDidacticiel > Pourquoi BigDecimal de Java lance-t-il une exception ArithmeticException pour les extensions décimales sans fin ?

Pourquoi BigDecimal de Java lance-t-il une exception ArithmeticException pour les extensions décimales sans fin ?

Mary-Kate Olsen
Libérer: 2024-11-15 10:11:02
original
885 Les gens l'ont consulté

Why Does Java's BigDecimal Throw an ArithmeticException for Non-Terminating Decimal Expansions?

ArithmeticException en raison d'une expansion décimale sans fin

Lors de l'exécution d'une opération de division à l'aide de la classe BigDecimal de Java, vous pouvez rencontrer l'exception suivante :

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
Copier après la connexion

Cette erreur se produit lorsque l'opération de division aboutit à un quotient décimal avec une expansion infiniment longue. Par défaut, les opérations BigDecimal sont exactes, ce qui signifie qu'elles produisent le résultat mathématique exact sans arrondi.

Cependant, la méthode Divide renvoie une ArithmeticException lorsque le résultat a une expansion décimale non terminale et qu'un résultat exact est attendu (c'est-à-dire , lorsque le paramètre de précision de l'objet MathContext utilisé est 0).

Pour résoudre ce problème, vous pouvez spécifier un paramètre de précision non nul pour le Objet MathContext. Cela forcera le résultat à être arrondi à un nombre spécifié de décimales :

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

Dans ce cas, 2 est l'échelle (nombre de décimales) et RoundingMode.HALF_UP est le mode d'arrondi à utiliser . En spécifiant une précision, vous pouvez obtenir un résultat décimal fini et représentable.

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