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;请求