Еще одна из самых больших ошибок в Java связана с работой с округлением в Java.
Если для этого вы будете просто использовать setScale(int newScale) — т.е. количество знаков после запятой

BigDecimal b = new BigDecimal("1.55555555").setScale(3);

Мы тогда получим:
Exception in thread «main» java.lang.ArithmeticException: Rounding necessary

Т.к. не понятно, как данное число округлять.

Всегда необходимо использовать .setScale(scale, roundingMode).
roundingMode — т.е. как мы будем округлять число.

Я обычно использую ROUND_HALF_UP, округление вверх, если число после запятой больше 5(т.е. обычное округление по правилам математики)

BigDecimal b = new BigDecimal("1.55555555").setScale(3, BigDecimal.ROUND_HALF_UP);
System.out.println(b);

Например в данном случае вывод на консоль:
1.556

Реклама