1、BigDecimal 精度設置算法
BigDecimal setScale(int newScale, int roundingMode);ide
newScale:小數位數,函數
RoundingMode是一個枚舉類,有如下幾個常量: spa
一、ROUND_UP:遠離零方向舍入的舍入模式。始終對非零捨棄部分前面的數字加 1。注意,此舍入模式始終不會減小計算值的絕對值。
二、ROUND_DOWN:向零方向舍入的舍入模式。從不對捨棄部分前面的數字加 1(即截尾)。注意,此舍入模式始終不會增長計算值的絕對值。
三、ROUND_CEILING:向正無限大方向舍入的舍入模式。若是結果爲正,則舍入行爲相似於 RoundingMode.UP;若是結果爲負,則舍入行爲相似於 RoundingMode.DOWN。注意,此舍入模式始終不會減小計算值。
四、ROUND_FLOOR:向負無限大方向舍入的舍入模式。若是結果爲正,則舍入行爲相似於 RoundingMode.DOWN;若是結果爲負,則舍入行爲相似於RoundingMode.UP。注意,此舍入模式始終不會增長計算值。
五、ROUND_HALF_UP:向最接近數字方向舍入的舍入模式,若是與兩個相鄰數字的距離相等,則向上舍入。若是被捨棄部分 >= 0.5,則舍入行爲同 RoundingMode.UP;不然舍入行爲同RoundingMode.DOWN。注意,此舍入模式就是一般學校裏講的四捨五入。
六、ROUND_HALF_DOWN:向最接近數字方向舍入的舍入模式,若是與兩個相鄰數字的距離相等,則向下舍入。若是被捨棄部分 > 0.5,則舍入行爲同 RoundingMode.UP;不然舍入行爲同RoundingMode.DOWN。
七、ROUND_HALF_EVEN:向最接近數字方向舍入的舍入模式,若是與兩個相鄰數字的距離相等,則向相鄰的偶數舍入。若是捨棄部分左邊的數字爲奇數,則舍入行爲同RoundingMode.HALF_UP;若是爲偶數,則舍入行爲同RoundingMode.HALF_DOWN。注意,在重複進行一系列計算時,此舍入模式能夠在統計上將累加錯誤減到最小。此舍入模式也稱爲「銀行家舍入法」,主要在美國使用。此舍入模式相似於 Java 中對float 和double 算法使用的舍入策略。
八、ROUND_UNNECESSARY:用於斷言請求的操做具備精確結果的舍入模式,所以不須要舍入。若是對生成精確結果的操做指定此舍入模式,則拋出 ArithmeticException。ip
2、BigDecimal 計算ci
一、加法 add()函數
二、減法subtract()函數
三、乘法multiply()函數
四、除法divide()函數
五、絕對值abs()函數it
3、BigDecimal 比較大小io
int a = bigdemical.compareTo(bigdemical2);
a = -1,表示bigdemical小於bigdemical2;
a = 0,表示bigdemical等於bigdemical2;
a = 1,表示bigdemical大於bigdemical2;請求