金額を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%コーシャであるとは確信していません-ダブルスとの間で変換するときに精度が失われる可能性があるのではないかと心配しています。しかし、これは私がこれまでに思いついた中で最高であり、機能しているようです。