【Java常用類庫】_大數操作(BigIntger、BigDecimal)

來源:互聯網
上載者:User

【Java常用類庫】_大數操作(BigIntger、BigDecimal)

本章目標:
可以使用 BigInteger操作大整數

大資料操作。正常情況下一個整數只能放在long類型之中,但是如果現在有如下的一個數字:
111111111111111111111111111111111111111111111111111111111111111111111111111111111

根本就無法儲存的,所以為瞭解決這樣的問題,在java中引入了兩個大數的操作類:

操作整數:BigInteger
操作小數:BigDecimal

3.1、BigInteger

如果在操作的時候一個整形資料已經超過了整數的最大類型長度long的話,則此資料就無法裝入,所以,此時要使用BigInteger類進行操作。

import java.math.BigInteger ;public class BigIntegerDemo01{    public static void main(String args[]){        BigInteger bi1 = new BigInteger("123456789") ;    // 聲明BigInteger對象        BigInteger bi2 = new BigInteger("987654321") ;    // 聲明BigInteger對象        System.out.println("加法操作:" + bi2.add(bi1)) ;    // 加法操作        System.out.println("減法操作:" + bi2.subtract(bi1)) ;    // 減法操作        System.out.println("乘法操作:" + bi2.multiply(bi1)) ;    // 乘法操作        System.out.println("除法操作:" + bi2.divide(bi1)) ;    // 除法操作        System.out.println("最大數:" + bi2.max(bi1)) ;     // 求出最大數        System.out.println("最小數:" + bi2.min(bi1)) ;     // 求出最小數        BigInteger result[] = bi2.divideAndRemainder(bi1) ;    // 求出餘數的除法操作        System.out.println("商是:" + result[0] +            ";餘數是:" + result[1]) ;    }};

3.2、BigDecimal

使用此類可以完成大的小數操作,而且也可以使用此類進行精確的四捨五入,這一點在開發中經常使用。

對於不需要任何準確計算精度的程式可以直接使用float或double完成,但是如果需要精確計算的結果,則必須使用BigDecimal類。

import java.math.* ;class MyMath{    public static double add(double d1,double d2){        // 進行加法計算        BigDecimal b1 = new BigDecimal(d1) ;        BigDecimal b2 = new BigDecimal(d2) ;        return b1.add(b2).doubleValue() ;    }    public static double sub(double d1,double d2){        // 進行減法計算        BigDecimal b1 = new BigDecimal(d1) ;        BigDecimal b2 = new BigDecimal(d2) ;        return b1.subtract(b2).doubleValue() ;    }    public static double mul(double d1,double d2){        // 進行乘法計算        BigDecimal b1 = new BigDecimal(d1) ;        BigDecimal b2 = new BigDecimal(d2) ;        return b1.multiply(b2).doubleValue() ;    }    public static double div(double d1,double d2,int len){        // 進行乘法計算        BigDecimal b1 = new BigDecimal(d1) ;        BigDecimal b2 = new BigDecimal(d2) ;        return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;    }    public static double round(double d,int len){    // 進行四捨五入        BigDecimal b1 = new BigDecimal(d) ;        BigDecimal b2 = new BigDecimal(1) ;        return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;    }};public class BigDecimalDemo01{    public static void main(String args[]){        System.out.println("加法運算:" + MyMath.round(MyMath.add(10.345,3.333),1)) ;        System.out.println("減法運算:" + MyMath.round(MyMath.sub(10.345,3.333),3)) ;        System.out.println("乘法運算:" + MyMath.round(MyMath.mul(10.345,3.333),2)) ;        System.out.println("除法運算:" + MyMath.div(10.345,3.333,3)) ;    }};

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.