BigDecimal类的使用(精确计算时需要注意问题)

时间:2022-06-07 06:54:25
    /**
     * BigDecimal初始化小数时,尽量用字符串形式,例如new BigDecimal("0.1");
     * BigDecimal类型变量比较大小时用compareTo方法,判断变量值是否为0,与BigDecimal.ZERO比较大小。
     * BigDecimal作除法时,除了要考虑除数是否为0,更要考虑是否能除尽的问题,
     * 直接调用BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)方法做除法可以避免除不尽的问题。
     */
    @Test
    public void main() {
        BigDecimal num = new BigDecimal("0.090100");
        BigDecimal num2 = new BigDecimal("0.0901100");
        double b = 3.34;
        BigDecimal num3 = new BigDecimal(b + "");
        BigDecimal num4 = new BigDecimal("2.5");
        BigDecimal num5 = new BigDecimal("6.2");
        System.out.println(num.subtract(num2));
        System.out.println(num.subtract(num2).add(num3));
        System.out.println(num.subtract(num2).add(num3).multiply(num4));
        System.out.println(num.subtract(num2).add(num3).multiply(num4).divide(num5, 10, BigDecimal.ROUND_HALF_DOWN));
    }


BigDecimal类的使用(精确计算时需要注意问题)