當基礎數據類型長度無法滿足需求時可以使用大數類
構造方法接受字符串為參數
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();
