Вам нужна только одна цифра дроби.
Ваш текущий код округляется правильно, слишком много цифр дроби.
Запрашиваемый режим округления называется HALF UP , который является значением по умолчанию для DecimalFormat
и единственным возможным режимом округления для printf()
. (Вы также можете использовать формат $#,###.#
, если не хотите отображать нули в виде дроби.)
Поэтому вы можете использовать свой десятичный формат просто отлично или даже System.out.printf()
, но ограничить количество цифр дроби до 1 :
DecimalFormat df = new DecimalFormat("$#,###.0"); //set MIN and MAX fraction digits to 1
df.setRoundingMode(RoundingMode.HALF_UP); //default but showing usage if needed
System.out.println(df.format(123454.84d));
System.out.println(df.format(123454.85d));
System.out.printf("$%,.1f", 123454.85d); //HALF UP rounding the only option
отпечатков:
$123,454.8
$123,454.9
$123,454.9