Запретить округление в String.format ("%. 2f", doubleValue) в Java - PullRequest
11 голосов
/ 20 августа 2009

Как предотвратить округление String.format("%.2f", doubleValue); (алгоритм округления до половины) вместо его усечения?

, например

doubleValue = 123.459

после форматирования,

doubleValue = 123.46

Я просто хочу сбросить последнюю цифру,

123.45

Я знаю, что есть другие способы сделать это, я просто хочу знать, возможно ли это с помощью String.format.

Ответы [ 4 ]

16 голосов
/ 20 августа 2009

Вы всегда можете установить режим округления:

http://java.sun.com/javase/6/docs/api/java/math/RoundingMode.html

и затем используйте String.Format () HALF_EVEN используется по умолчанию, но вы можете изменить его на CEILING

будет другой, не такой гибкий подход (но это не то, о чем вы спрашивали):

DecimalFormat df = new DecimalFormat("###.##");
df.format(123.459);
7 голосов
/ 20 августа 2009

Похоже, ответ большой жирный НЕТ. http://java.sun.com/javase/6/docs/api/java/util/Formatter.html#dndec «тогда значение будет округлено с использованием алгоритма округления до половины»

Мне кажется странным, что они так и сделали, поскольку NumberFormatter позволяет вам устанавливать RoundingMode. Но, как вы говорите, есть и другие способы сделать это. Очевидно, самое простое - вычесть 0,005 из вашего значения первым.

4 голосов
/ 20 августа 2009
doubleValue = 123.459
doubleValue = Math.ceil(doubleValue*100)/100;
0 голосов
/ 25 февраля 2016

использовать String.format ("%. 2f", doubleValue - .005)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...