2015-07-10 80 views
0

爲什麼在將Math.round結果傳遞給0時爲-0.5?當傳遞也是0.5時結果爲1?不應該是,當你將-0.5傳遞給Math.round()時,也應該產生-1作爲結果?當數字爲-0.6時,我獲得-1結果。四捨五入負浮動文字 - java

回答

2

Math.round(double)記錄爲:

返回最接近參數的long,與領帶舍入到正無窮大。

所以-​​0.5被四捨五入(朝正無窮大),而不是向負無窮。它的行爲與記錄完全一致。

0

如果您閱讀the docs,則表示round()「返回距離參數最近的距離,並且關係四捨五入。」

「向上」是向正無窮大,從0

ETA沒有離開:我從喬恩斯基特的答案看到的Java 8文檔提高清晰度這一點。這個答案引用了Java 7,它比8所說的有點混亂。

1

round(x)的工作被實現爲floor(x + 0.5),直到Java6 atleast。 因此,由邏輯,地板(-0.5 + 0.5)爲您提供0 和 樓(0.5 + 0.5)爲您提供了1

您可以參考以下鏈接瞭解更多詳情

Why does Math.round(0.49999999999999994) return 1