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

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-15 09:58:02435parcourir

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)

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!

Déclaration:
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