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.