1. 程式人生 > >Java幾種常見的四捨五入的方法

Java幾種常見的四捨五入的方法

/*
       * 
         在上面簡單地介紹了銀行家舍入法,目前java支援7中舍入法:

      1、 ROUND_UP:遠離零方向舍入。向絕對值最大的方向舍入,只要捨棄位非0即進位。

      2、 ROUND_DOWN:趨向零方向舍入。向絕對值最小的方向輸入,所有的位都要捨棄,不存在進位情況。

      3、 ROUND_CEILING:向正無窮方向舍入。向正最大方向靠攏。若是正數,舍入行為類似於ROUND_UP,若為負數,
             舍入行為類似於ROUND_DOWN。Math.round()方法就是使用的此模式。

      4、 ROUND_FLOOR:向負無窮方向舍入。向負無窮方向靠攏。若是正數,舍入行為類似於ROUND_DOWN;若為負數,舍入行為類似於ROUND_UP。

      5、 HALF_UP:最近數字舍入(5進)。這是我們最經典的四捨五入。

      6、 HALF_DOWN:最近數字舍入(5舍)。在這裡5是要捨棄的。

      7、 HAIL_EVEN:銀行家舍入法。
      
      *
      */
    
    
    @Test
    public void Test3() {
        System.out.println("12.5的四捨五入值:" + Math.round(12.5));
        System.out.println("-12.5的四捨五入值:" + Math.round(-12.5));
    }

    @Test
    public void Test4() {
        BigDecimal d = new BigDecimal(100000); // 存款
        BigDecimal r = new BigDecimal(0.001875 * 3); // 利息
        BigDecimal i = d.multiply(r).setScale(2, RoundingMode.HALF_EVEN); // 使用銀行家演算法

        System.out.println("季利息是:" + i);
    }

    @Test
    public void Test5() {
        double f = 111231.5585;
        BigDecimal b = new BigDecimal(f);
        double f1 = b.setScale(2, RoundingMode.HALF_UP).doubleValue();
        System.out.println("f1:" + f1);
    }

    @Test
    public void Test6() {
        java.text.DecimalFormat df = new java.text.DecimalFormat("#.00");
        String s1 = df.format(3.1415926);
        String s2 = df.format(3.1465926);
        System.out.println("s:" + s1);
        System.out.println("s:" + s2);
    }

    @Test
    public void Test7() {

        String s = String.format("%.2f",3.1415926);
        String s1 = String.format("%.2f",3.1465926);
        System.out.println("S:"+s);
        System.out.println("S:"+s1);
    
    }

補充:

如果需要進一還可以使用: