Java幾種常見的四捨五入的方法
阿新 • • 發佈:2018-12-17
/* * 在上面簡單地介紹了銀行家舍入法,目前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); }
補充:
如果需要進一還可以使用: