Это явно упоминается в javadoc setScale
метода
@ генерирует ArithmeticException, если {@code roundingMode == ROUND_UNNECESSARY} и для указанной операции масштабирования потребуется округление.
Пример:
Это бросило бы вышеупомянутое исключение
new BigDecimal("1200.1234").setScale(2, BigDecimal.ROUND_UNNECESSARY)
Потому что, когда вы уменьшаете масштаб до 2, вам нужно указать, как его округлить - округлить вверх (1200,13) или округлить (1200,12)
Если вам нужны только два десятичных знака, выберите режим округления (в зависимости от того, что вам подходит)