重學Java(2):Java數位處理

來源:互聯網
上載者:User

標籤:

一、簡單的例子

1     public void testNum(){2         System.out.println(Math.round(12.5));3         System.out.println(Math.round(-12.5));4     }5 6     Output: 137             -12
    輸出是由 Math.round 的四捨五入規則影響的。

二、Java中的舍入法

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:銀行家舍入法。捨去位的數值小於5時直接捨去,大於5時進位後捨去,等於5時若後面還有其他非0值則進位
後捨去,若5後面是0則根據5前面數位奇偶性判斷,奇數進位,偶數捨去。

銀行家演算法舉例:
1 public static void main(String[] args) {2                 BigDecimal d = new BigDecimal(100000);      //存款3                 BigDecimal r = new BigDecimal(0.001865*3);   //利息4                 BigDecimal i = d.multiply(r).setScale(2,RoundingMode.HALF_EVEN);     //使用銀行家演算法5 6                 System.out.println("季利息是:"+i);7                 }8         Output:9         季利息是:559.50

     

三、設定精度

1.使用BigDecimal
1 public void testNumberScale(){2             double d = 123456.7850;3             BigDecimal bigDecimal = new BigDecimal(d);4             double d1 = bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();5             System.out.println(d1);6         }

這裡使用BigDecimal 使用 setScale 設定精度,使用 ROUND_HALF_UP 設定舍入規則。

2.使用 DecimalFormat

1 public void testNumberScale2(){2             double d = 123456.7850;3             DecimalFormat decimalFormat = new DecimalFormat("##.00");4             String d1 = decimalFormat.format(d);5             System.out.println(d1);6         }

3.使用 String.format

1 public void testNumberScale3(){2             double d = 123456.7850;3             String d1 = String.format("%.2f",d);4             System.out.println(d1);5         }


注意 DecimalFormat 的舍入規則與 3 不同

重學Java(2):Java數位處理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.