В нашем коде мы должны сделать несколько расчетов. Они иногда приводят к небольшим ошибкам из -за проблем с округлением. Мы используем BigDecimals, но они могут привести к различиям, даже при использовании правильных математических контекстов и режимов округления. Пример при разделении 1 на 3 и снова умножение на 3: < /p>
Код: Выделить всё
BigDecimal divide = BigDecimal.ONE.divide(new BigDecimal("3"), MathContext.DECIMAL64); // 0.3333333333333333
BigDecimal result = divide.multiply(new BigDecimal("3")); // 0.9999999999999999
После результата округления на двух десятичных актимах с использованием SetScale (2, RoundingMode.half_up) мы получим 0,99 вместо ожидаемого 1,00. Кто -нибудь знает, как решить это с помощью BigDecimals или вместо этого использовать другую библиотеку?
Подробнее здесь:
https://stackoverflow.com/questions/797 ... n-rounding