2012-03-26 73 views
2

我如何正确将BigDecimal舍入到最接近的整值?Round BigDecimal到最接近的整数值

例如

1.2 --> 1 

1.5 --> 2 

1.6 --> 2. 

我试图

BigDecimal val = new BigDecimal(1.5); 
System.out.println(val.setScale(0, RoundingMode.HALF_UP)) 

但是,这仍然给了我1不2的预期。

有没有人碰巧知道如何正确地做到这一点?

感谢

+4

[你确切的代码输出2对于我来说,ideone](http://ideone.com/AoQnQ),一定有其他的东西,你做的是错的。 – dasblinkenlight 2012-03-26 18:02:48

+0

也适合我。 – gorjusborg 2012-03-26 18:08:16

+0

将您的数字乘以10,并将其作为测试前的小数位数。在你的例子中,你会乘以10.这将显示你在setScale中使用的数字。 – 2012-03-26 18:11:44

回答

4
BigDecimal val = new BigDecimal(1.2); 
    System.out.println(val.setScale(0, RoundingMode.HALF_UP)); 
    val = new BigDecimal(1.5); 
    System.out.println(val.setScale(0, RoundingMode.HALF_UP)); 
    val = new BigDecimal(1.6); 
    System.out.println(val.setScale(0, RoundingMode.HALF_UP)); 

结果:

我不明白问题出在哪里

+0

对不起,没关系。问题来自不同的地方。是的,该方法工作得很好。 – 2012-03-26 19:39:22