круглый BigDecimal до ближайших 5 центов
Я пытаюсь понять, как округлить денежную сумму в сторону увеличения до ближайших 5 центов. Ниже показаны мои ожидаемые результаты
1.03 => 1.05
1.051 => 1.10
1.05 => 1.05
1.900001 => 1.10
Мне нужно, чтобы результат имел точность 2 (как показано выше).
ОбновитьСледуя совету ниже, лучшее, что я мог сделать, это я
BigDecimal amount = new BigDecimal(990.49)
// To round to the nearest .05, multiply by 20, round to the nearest integer, then divide by 20
def result = new BigDecimal(Math.ceil(amount.doubleValue() * 20) / 20)
result.setScale(2, RoundingMode.HALF_UP)
я не уверен, что это на 100% кошерно - яЭто касается точности, которая может быть потеряна при конвертации в и из двойников. Тем не менее, это 'лучший ямы придумали до сих пор икажется работать.