在Java中防止String.format(“%。2f”,doubleValue)中的舍入

时间:2009-08-20 12:23:31

标签: java string floating-point format

如何阻止String.format("%.2f", doubleValue);四舍五入(圆半算法)而不是截断它?

e.g。

doubleValue = 123.459

格式化后,

doubleValue = 123.46

我只想丢弃最后一位数字,

123.45

我知道还有其他方法可以做到这一点,我只想知道是否可以使用String.format。

4 个答案:

答案 0 :(得分:16)

您始终可以设置舍入模式:

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);

答案 1 :(得分:7)

看起来答案是一个很大的脂肪NO。 http://java.sun.com/javase/6/docs/api/java/util/Formatter.html#dndec “然后使用圆形半升算法对值进行舍入”

我发现他们这样做很奇怪,因为NumberFormatter允许你设置RoundingMode。但正如你所说,还有其他方法可以做到这一点。显然最容易从您的值中减去.005。

答案 2 :(得分:4)

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

答案 3 :(得分:-1)

使用String.format("%。2f",doubleValue - .005)