java 對浮點數取整方法floor,…
阿新 • • 發佈:2019-01-01
在java中的Math類中有三種方法對浮點數取整
floor //向下取整
ceil //向上取整
round //四捨五入取整
例如:
Math.floor(1.3); // 1
Math.floor(1.7); //1
Math.ceil(1.3); //2
Math.ceil(1.7); //2
Math.round(1.3); //1
Math.round(1.7); //2
很簡單的辦法。
這個取整有一個很好的應用
例如:1.736向下取整保留兩位小數,應該如何辦?
一種直接辦法就是用BigDecimal.setScale().doubleValue()的方法(具體如何做看我上一篇日誌java保留兩位小數),這樣子比較麻煩,因為用到大浮點數了,也會出現7-8位小數突然多出來一個1。
那有沒有簡單辦法?
當然,把1.736*100 = 173.6
然後 Math.floor(173.6) = 173
然後再 173/100 = 1.73這樣子就可以了。
或者:
1.734向上保留兩位小數,精確到0.05,這個時候用大浮點數也要先乘以2再保留,然後再除以2.
但我們完全可以直接乘以20,然後Math.ceil(1.734*20)/20這樣子就是最終結果了。。