java中 foreach 或 for 循环 BigDecimal 类型 循环计算不会相加的问题

145 阅读1分钟

使用for的话

public static void main(String[] args) {
        BigDecimal bigDecimal = new BigDecimal(1);
        for (int i = 0; i < 50; i++){
             bigDecimal.add(new BigDecimal(i));
        }
        System.out.println(bigDecimal);
    }
上面这段代码,biDecimal的结果还会是0.

public static void main(String[] args) {
        BigDecimal bigDecimal = new BigDecimal(1);
        for (int i = 0; i < 50; i++){
            bigDecimal = bigDecimal.add(new BigDecimal(i));
        }
        System.out.println(bigDecimal);
    }
下面这段代码的结果就不是0.

因为bigDecimal 是对象。

使用forEach的话

       AtomicReference<BigDecimal> amount= new AtomicReference<>(new BigDecimal(0));
        if(!CollectionUtils.isEmpty(ysTenantOrder.getYsTenantOrderSubList())){
            ysTenantOrder.getYsTenantOrderSubList().forEach(item->{
               amount.set(amount.get().add(menuAmount(item)));
            });
        }