Мне нужно округлить число до двух знаков после запятой:Округление числа до двух знаков после запятой в Java
1.1245 → 1.13 1.1235 → 1,12
Я провел последние два дня чистящими StackOverflow, и я был не в состоянии получить любое решение, которое я нашел, чтобы работать на всех:
- What rounding method should you use in Java for money?
- Rounding BigDecimal to always have two decimal places
- Using DecimalFormat
Они все, кажется, просто обрезает номер на третьем знаке после запятой, а затем вокруг него оттуда, что не то, что я пытаюсь сделать. Я пытаюсь начать с места, расположенного дальше всего справа, а затем начать округлять соответственно; 5-9 идет вверх, 0-4 не влияет и отбрасывается.
Вот текущий код, я работаю с:
BigDecimal a = new BigDecimal("1.1245");
double b = Math.round(a.doubleValue() * 100)/100;
System.out.print(a.setScale(2, BigDecimal.ROUND_HALF_EVEN) + " : "
+ a.setScale(2, BigDecimal.ROUND_HALF_UP) + " : "
+ b);
А вот выход прямо из консоли:
Проблема здесь в том, что я ожидаю 1.13 быть результатом во всех вышеуказанных случаях, как если бы выполнялся следующий процесс:
1.1245 → 1.125 → 1.13
1.1235 → 1.124 → 1.12
Ваше правило округления довольно необычно – njzk2
что вы говорите, что '1.1244 -> 1.12' и' 1.245 -> 1.13'? (никто этого не делает) – njzk2
Зачем это было то, что вы хотите? '1.1245' _strictly_ ближе к 1.12, чем к 1.13. –