JAVA大數類—基礎操作(加減乘除、取模、四舍五入、設置保留位數)


當基礎數據類型長度無法滿足需求時可以使用大數類  

構造方法接受字符串為參數

1 BigInteger bInt = new BigInteger("123123");
2 BigDecimal bDouble = new BigDecimal("123123.123123124");

 

         基礎操作(取模使用divideAndRemainder方法,返回的數組第二個元素為余數):

    BigDecimal在做除法時必須設定傳入精度(保留多少位小數),否則會出現異常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result。 

    除法還有兩個接受不同數量參數的方法:

    接受兩個參數的方法:

      @param divisor value by which this {@code BigDecimal} is to be divided. 傳入除數

      @param roundingMode rounding mode to apply. 傳入round的模式

    三個參數的方法:

      @param divisor value by which this {@code BigDecimal} is to be divided. 傳入除數
      @param scale scale of the {@code BigDecimal} quotient to be returned. 傳入精度
      @param roundingMode rounding mode to apply. 傳入round的模式

  round模式為小數取舍模式:

    BigDecimal.ROUND_UP:最后一位如果大於0,則向前進一位,正負數都如此。   

    BigDecimal.ROUND_DOWN:最后一位不管是什么都會被舍棄。   

    BigDecimal.ROUND_CEILING:如果是正數,按ROUND_UP處理;如果是負數,按照ROUND_DOWN處理。例如,7.1->8;-7.1->-7。所以,這種近似的結果都會>=實際值。   

    BigDecimal.ROUND_FLOOR:跟BigDecimal_ROUND_CEILING相反。例如,7.1->7;-7.1->-8。這種處理的結果<=實際值。   

    BigDecimal.ROUND_HALF_DOWN:如果最后一位<=5則舍棄,如果>5, 向前進一位。如,7.5->7;7.6->8;-7.5->-7 。  

    BigDecimal.ROUND_HALF_UP:如果最后一位<5則舍棄,如果>=5, 向前進一位。反之舍棄。如,7.5->8;7.4->7;-7.5->-8 。 —>  (四舍五入)常用 

    BigDecimal.ROUND_HALF_EVEN:如果倒數第二位是奇數,按照BigDecimal.ROUND_HALF_UP處理;如果是偶數,按照BigDecimal.ROUND_HALF_DOWN來處理。如,7.5->8;8.5->8;7.4->7;-7.5->-8。


  BigDecimal有一個setScale()方法,可以接受兩個參數

    1、保留位數  

    2、round模式

  輸出可以直接調用.toString();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM