Maison >Java >javaDidacticiel >Pourquoi BigDecimal de Java lance-t-il une exception ArithmeticException pour les extensions décimales 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.
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)
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!