BigDecimal和数字类型转换

四则运算
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
BigDecimal b3 = b1.add(b2);//b1+b2
BigDecimal b3 = b1.subtract(b2);//b1-b2
BigDecimal b3 = b1.multiply(b2);//b1*b2
BigDecimal b3 = b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP);//b1/b2,精确到小数点后scale位,其余的四舍五入
比较大小
int num = b1.compareTo(b2);//num为负,b1<b2、num为0,b1==b2、num为正,b1>b2
Int num=a.compareTo(Integer anotherInteger);
Int num=a.compareTo(BigDecimal anotherBigDecimal);
BigDecimal取其中最大、最小值、绝对值、相反数
BigDecimal c = a.max (b) //比较取最大值
BigDecimal c = a.min(b) //比较取最小值
BigDecimal c = a.abs()//取最绝对值
BigDecimal c = a.negate()//取相反数
取整
long l = bd.setScale(0,BigDecimal.ROUND_UP).longValue(); // 向上取整
long l = bd.setScale(0,BigDecimal.ROUND_DOWN).longValue(); // 向下取整
ROUND_UP:非0时,舍弃小数后(整数部分)加1,比如12.49结果为13,-12.49结果为 -13
ROUND_DOWN:直接舍弃小数
ROUND_CEILING:如果 BigDecimal 是正的,则做 ROUND_UP 操作;如果为负,则做 ROUND_DOWN 操作 (一句话:取附近较大的整数)
ROUND_FLOOR: 如果 BigDecimal 是正的,则做 ROUND_DOWN 操作;如果为负,则做 ROUND_UP 操作(一句话:取附近较小的整数)
ROUND_HALF_UP:四舍五入(取更近的整数)
ROUND_HALF_DOWN:跟ROUND_HALF_UP 差别仅在于0.5时会向下取整
ROUND_HALF_EVEN:取最近的偶数
ROUND_UNNECESSARY:不需要取整,如果存在小数位,就抛ArithmeticException 异常

posted @ 2021-12-13 18:08  QAQ-码小农  阅读(372)  评论(0)    收藏  举报