Как в Java округлить double до нужного количества знаков после запятой

Самый простой способ — воспользоваться всей палитрой способов округления дробных чисел класса java.Math.BigDecimal. Например, так:

double d = 2.3456;

d = new BigDecimal(d).setScale(2, RoundingMode.HALF_EVEN).doubleValue();


System.out.println(d); //2.35

В данном примере выбран способ округления RoundingMode.HALF_EVEN, но можно выбрать любой по вкусу.

если вся палитра способов округления не нужна и есть опасения по поводу производительности первого способа, можно попытаться воспользоваться методом Math.round() следующим способом:

double d = 2.3456;

d = Math.round(d * 100.0) / 100.0;


System.out.println(d); //2.35

В этом случае нужно учитывать 2 нюанса. Количество знаков после запятой соответствует количеству нулей множителя и делителя. То есть в нашем случае для двух знаков мы умножали и делили на 100.0. Если нужно округлить до 3 знаков, то умножаем и делим на 1000.0 и т.д.

Второй нюанс заключается в том, что делитель должен явно иметь тип double. В нашем случае это выражено через точку-ноль: 100.0. Если мы в последнем действии поделим просто на 100, то в ответе получим 2.0.