Maison  >  Article  >  Java  >  Comment gérer les extensions décimales sans fin avec BigDecimal ?

Comment gérer les extensions décimales sans fin avec BigDecimal ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-24 11:45:14296parcourir

How to Handle Non-Terminating Decimal Expansions with BigDecimal?

Gérer les extensions décimales sans fin et BigDecimal

Lorsque vous travaillez avec des objets BigDecimal, il est important d'être conscient du potentiel de non- terminer les expansions décimales. Considérons le code suivant :

BigDecimal a = new BigDecimal("1.6");
BigDecimal b = new BigDecimal("9.2");
a.divide(b)

Ce code tente de diviser les deux objets BigDecimal, mais génère à la place l'exception suivante :

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

Cette exception est levée car le quotient exact d'un et b a une expansion décimale non terminale. Par défaut, les opérations BigDecimal sont exactes, ce qui signifie qu'elles renvoient le résultat exact même s'il a une expansion décimale infinie. Cependant, lorsque la précision est définie sur 0 (comme c'est le cas par défaut), le mode d'arrondi est ignoré et aucun arrondi n'est effectué.

Pour corriger cette exception, vous devez spécifier un mode d'arrondi et une précision. Par exemple :

a.divide(b, 2, RoundingMode.HALF_UP)

Dans ce cas, la division sera effectuée avec une précision de 2 et le résultat sera arrondi grâce au mode d'arrondi HALF_UP. Cela entraînera une expansion décimale finie.

Pour plus d'informations sur la gestion des expansions décimales sans fin avec BigDecimal, reportez-vous à la documentation Java ou aux ressources pertinentes telles que les articles de blog et les didacticiels.

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
Article précédent:Usine simpleArticle suivant:Usine simple