保留兩位小數的寫法

項目有一個需求,把34899米轉化成帶小數(保留兩位)的千米數輸出出來.目前我知道有三種方式:
1. Math.round()最後返回的是一個整形數(顯然此種方法能夠排除了),固然咱們能夠用這個方法間接實現保留兩位小數的方法好比Math.round(34899/10d)/100d
2. NumberFormat的setMaximumFractionDigits和format方法.
```
//setMaximumFractionDigits表示保留的數量,注意這個保留的最後一位小數是四捨五入後產生的,而format方法返回的是一個字符串.
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(1);
String str = nf.format(count);
3. BigDecimal的divide方法.當咱們須要精確計算的時候,通常是選擇BigDecimal這個對象的.
//BigDecimal具備多個構造方,記住絕對不能使用BigDecimal帶Double類型的構造方法,會致使結果不許確.
BigDecimal bd = new BigDecimal("123.236");
BigDecimal aaa = bd.setScale(2, BigDecimal.ROUND_UP);
//結果123.24
//setScale(1,BigDecimal.ROUND_DOWN)直接刪除多餘的小數位,如2.35會變成2.3 
//setScale(1,BigDecimal.ROUND_UP)進位處理,2.35變成2.4 
//setScale(1,BigDecimal.ROUND_HALF_UP)四捨五入,2.35變成2.4
//setScaler(1,BigDecimal.ROUND_HALF_DOWN)四捨五入,2.35變成2.3,若是是5則向下舍
PPPSSS:
    **當咱們在換算單位的時候爲了保留精確度,須要在換算單位後加上d保證精度不會丟失,好比:1234米轉換成km 直接"1234/1000"會獲得1,而"1234/1000d"則獲得1.234.**
相關文章
相關標籤/搜索