Maison > Java > javaDidacticiel > 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
Libérer: 2024-11-24 11:45:14
original
353 Les gens l'ont consulté

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

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

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

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!

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