Форматирование десятичных знаков в Java - PullRequest
0 голосов
/ 26 декабря 2011

Я пытаюсь отформатировать двойной или просто 2 десятичных знака в Java.

Я прочитал следующий пост: Как округлить число до n десятичных знаков в Java

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

Например:

DecimalFormat df = new DecimalFormat("#.##");
normalizedValue = Double.valueOf(df.format(normalizedValue));

Если я печатаю normalizedValue, я получаю результат, подобный следующему:

-78.64000000000001

18.97

59.469999999999985

-63.120000000000005

(Примечание: некоторые отформатированы правильно ... некоторые нет)

Итак, эти методы, кажется, округляются, но мне нужно что-то, что удалит все десятичные дроби после 2 десятичных знаков ... Есть предложения?

Спасибо.

1 Ответ

5 голосов
/ 26 декабря 2011

Строковое представление, заданное DecimalFormat.format(...), действительно имеет только 2 цифры в вашем примере.Но как только вы преобразуете его в двойное, возникают проблемы с точностью.Бинарный базовый формат, такой как double, всегда будет показывать такие эффекты, когда вы пытаетесь представить «exakt» десятичные дроби.Вы можете изменить значение на BigDecimal, чтобы избавиться от таких эффектов.

...