2012-03-26 70 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