對 java 數字小數點後位數進行處理

1、返回 String 類型數據code

對數據進行處理後,返回 String 類型數據,能夠經過以下方式進行處理:orm

  • DecimalFormat 對數據格式化
  • String.format 對數據格式化

二者達到的效果是同樣的。ci

- 小數點後位數不足的,補0
- 四捨五入,對數據截斷
Double d = 123.451789D;
        DecimalFormat decimalFormat = new DecimalFormat("#.0000000");
        DecimalFormat decimalFormat2 = new DecimalFormat("#.000");
        DecimalFormat decimalFormat3 = new DecimalFormat("#.00");

        //補齊位數
        System.out.println(decimalFormat.format(d));
        //四捨五入
        System.out.println(decimalFormat2.format(d));
        System.out.println(decimalFormat3.format(d));
        

        //四捨五入
        System.out.println(String.format("%.2f",d));
        System.out.println(String.format("%.3f",d));
        
        //補齊位數
        System.out.println(String.format("%.10f",d));

補充:io

String.format 中對數字處理有以下限制: %[argument_index$][flags][width][.precision][t]conversionform

2、返回 Double 類型數據方法

可經過 BigDecimal 對數據進行處理,在精度的處理上能知足多種需求:im

  • BigDecimal.setScale()方法用於格式化小數點
  • setScale(1)表示保留一位小數,默認用四捨五入方式
  • setScale(1,BigDecimal.ROUND_DOWN) 直接刪除多餘的小數位,如2.35會變成2.3
  • setScale(1,BigDecimal.ROUND_UP) 進位處理,2.35變成2.4
  • setScale(1,BigDecimal.ROUND_HALF_UP) 四捨五入,>=0.5時向上取,反之則向下
  • setScaler(1,BigDecimal.ROUND_HALF_DOWN)四捨五入,>0.5時向上取,反之則向下
System.out.println(BigDecimal.valueOf(d).setScale(2, BigDecimal.ROUND_UP).doubleValue());
    System.out.println(BigDecimal.valueOf(d).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
    System.out.println(BigDecimal.valueOf(d).setScale(1, BigDecimal.ROUND_HALF_DOWN).doubleValue());
相關文章
相關標籤/搜索