Math.round
позволяет вам округлить число до ближайшего целого числа. Похоже, вы пытаетесь округлить до ближайшего кратного 0.5. Общий способ решения таких проблем, как это
roundedValue = Math.round (X/M) * M;
округлять до ближайшего кратного M
. Так что в вашем случае это будет
roundedValue = Math.round (X/0.5) * 0.5;
, который так же, как
roundedValue = Math.round (X * 2.0)/2.0;
Точно так же, если вы хотите, чтобы закруглить что-то до ближайшего кратного, скажем, 0,01, один из них будет работать:
roundedValue = Math.round (X/0.01) * 0.01;
roundedValue = Math.round (X * 100.0)/100.0;
EDIT: похоже, вы изменили свой вопрос, так что я говорил ранее о округление до ближайшего числа, кратного 0,5 не исправить больше, и теперь вы округляете до ближайшего кратного 0,05. Во всяком случае, общий метод, который я обсуждал, все еще работает.
Сторона комментария: вы не говорите, какой тип вашего номера. Все считают, что это «двойник». Но не рекомендуется использовать 'float' или' double' при работе с валютой, потому что они не представляют большинство чисел точно. Посмотрите на [BigDecimal] (http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html). – ajb