Предотвратить завершение в String.format( "%. 2f", doubleValue) в Java

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

например.

doubleValue = 123.459

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

doubleValue = 123.46

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

123.45

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

Ответ 1

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

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

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

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

DecimalFormat df = new DecimalFormat("###.##");
df.format(123.459);

Ответ 2

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

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

Ответ 3

doubleValue = 123.459
doubleValue = Math.ceil(doubleValue*100)/100;

Ответ 4

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