Предотвратите округление в строке.формат.%"(2f", doubleValue) на языке Java

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

например

doubleValue = 123.459

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

doubleValue = 123.46

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

123.45

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

4 ответов


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

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

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

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

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

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

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


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

использовать string.формат.%"(2f", doubleValue - .005)