在Java中防止String.format(“%。2f”,doubleValue)中的舍入
如何阻止String.format("%.2f", doubleValue);
从四舍五入(圆半算法)而不是截断它?
例如
doubleValue = 123.459
格式化后,
doubleValue = 123.46
我只想丢弃最后一位数,
123.45
我知道还有其他方法可以做到这一点,我只是想知道使用String.format是否可行。
您始终可以设置舍入模式:
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);
看起来答案是一个很大的脂肪NO。 http://java.sun.com/javase/6/docs/api/java/util/Formatter.html#dndec “然后使用圆半升算法对值进行舍入”
我发现他们这样做很奇怪,因为NumberFormatter允许你设置RoundingMode。 但正如你所说,还有其他方法可以做到这一点。 显然最容易从您的值中减去.005。
doubleValue = 123.459 doubleValue = Math.ceil(doubleValue*100)/100;
使用String.format(“%。2f”,doubleValue – .005)