Как в 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.