Использование Java (JDK 1.8.0_66 и JDK 1.8.0_181) и его встроенного класса BigDecimal при выполнении следующих операций:
BigDecimal res = new BigDecimal("290");
BigDecimal sub = new BigDecimal("22");
sub = sub.subtract(new BigDecimal("7"));
sub = sub.subtract(new BigDecimal("4"));
res = res.divide(new BigDecimal("22"), 2, RoundingMode.HALF_EVEN);
res = res.multiply(sub);
res = res.setScale(2, RoundingMode.HALF_EVEN);
дает результат 144,98 при ожидаемом значении 145.
Почему это происходит? Я пробовал локальный и онлайн-компилятор. Установка масштаба происходит слишком поздно? И как я могу получить более точный расчет?
Эта формула используется для представления расчетов денежной стоимости.