Подтвердить что ты не робот

Десятичное округление

Вот небольшой код, чтобы проиллюстрировать, что я вижу

float floater = 59.999f;

DecimalFormat df = new DecimalFormat("00.0");

System.out.println(df.format(floater));

Отпечатки:

60.0

Я бы хотел, чтобы он печатал

59.9

Что мне нужно сделать?

4b9b3361

Ответ 1

Добавьте эту строку перед использованием DecimalFormat:

df.setRoundingMode(RoundingMode.DOWN);

Взгляните на другие режимы округления и посмотрите, какой из них лучше для вас.

Примечание: этот метод работает только в JDK 1.6 или выше

Ответ 2

float d = 59.999f;
BigDecimal bd = new BigDecimal(d);
// Use the returned value from setScale, as it doesn't modify the caller.
bd = bd.setScale(1, BigDecimal.ROUND_FLOOR);
String formatted = bd.toString();