Округление десятичного формата - PullRequest
16 голосов
/ 23 июня 2011

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

float floater = 59.999f;

DecimalFormat df = new DecimalFormat("00.0");

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

Это печатает:

60.0

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

59.9

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

Ответы [ 2 ]

26 голосов
/ 23 июня 2011

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

df.setRoundingMode(RoundingMode.DOWN);

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

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

1 голос
/ 23 июня 2011
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();
...