ceil или округление после десятичного значения в Java - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть десятичное значение 46,58, я хочу, чтобы оно было как 46,60, или для 46,44 это будет 46,40. Пробовал несколько способов, таких как функция округления класса Math и Bigdecimal, но он не округляется после десятичных значений.

BigDecimal bigDecimal = new BigDecimal(value);
bigDecimal = bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP);
value = bigDecimal.doubleValue();
double value = Math.round(decimalValue);

Ответы [ 2 ]

3 голосов
/ 07 апреля 2020

Сначала необходимо округлить до 1 знака после запятой, используя стандартную половину RoundingMode, а затем снова увеличить шкалу до 2:

BigDecimal bigDecimal = new BigDecimal("46.58");
bigDecimal = bigDecimal.setScale(1, RoundingMode.HALF_UP); // bigDecimal == 46.6
bigDecimal = bigDecimal.setScale(2, RoundingMode.UNNECESSARY); // bigDecimal == 46.60
0 голосов
/ 07 апреля 2020

ниже решение работало для меня.

    BigDecimal bigDecimal = new BigDecimal("46.58");
    bigDecimal = bigDecimal.setScale(1, RoundingMode.HALF_UP); 
    bigDecimal = bigDecimal.setScale(2, RoundingMode.UNNECESSARY); 
    double d = bigDecimal.doubleValue();
    String valstr = String.format("%.2f%n", d);
    System.out.println(valstr);
...