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!