# ArithmeticException: “Non-terminating decimal expansion; no exact representable decimal result”

###### Posted By: Anonymous

Why does the following code raise the exception shown below?

```
BigDecimal a = new BigDecimal("1.6");
BigDecimal b = new BigDecimal("9.2");
a.divide(b) // results in the following exception.
```

Exception:

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

## Solution

From the Java 11 `BigDecimal`

docs:

When a

`MathContext`

object is supplied with a precision setting of 0 (for example,`MathContext.UNLIMITED`

), arithmetic operations are exact, as are the arithmetic methods which take no`MathContext`

object. (This is the only behavior that was supported in releases prior to 5.)As a corollary of computing the exact result, the rounding mode setting of a

`MathContext`

object with a precision setting of 0 is not used and thus irrelevant. In the case of divide, the exact quotient could have an infinitely long decimal expansion; for example, 1 divided by 3.If the quotient has a nonterminating decimal expansion and the operation is specified to return an exact result, an

`ArithmeticException`

is thrown. Otherwise, the exact result of the division is returned, as done for other operations.

**To fix, you need to do something like this**:

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

where 2 is the scale and RoundingMode.HALF_UP is rounding mode

For more details see this blog post.

###### Answered By: Anonymous

Disclaimer: This content is shared under creative common license cc-by-sa 3.0. It is generated from StackExchange Website Network.