В бэкэнде я храню денежные значения в классе Money, который оборачивает BigDecimal и устанавливает округление всегда наполовину четным по шкале 8. Все основные операции работают нормально и ведут себя, как и ожидалось.Но мне нужно показать эти значения пользователю со шкалой 2, и это приводит к ошибкам округления.
Например, у меня есть эти значения в бэкэнде:
a = 109.11432
b = 9015.57069
c = 9124.68501
Каждый из них отформатирован в языковой стандарт pt-BR:
NumberFormat nf = NumberFormat.getInstance();
nf.setCurrency(Currency.getInstance(new Locale("pt","BR")));
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
String n = nf.format(valor);
return n;
И тогда у меня есть
a =109,11
b = 9,015,57
c = 9,124,69
И это нормально, сначала.Но с должен быть + б.С реальными значениями это гарантировано, но округление дает мне ошибку 0,01.
Как правильно справиться с этой ситуацией?