在Java中,BigDecimal是一个对象,不是基本数据类型,因此不能直接使用 + 运算符进行相加。上面的代码:
java
sumtotal = sumtotal + allocateDetail.getTotal();
会导致编译错误,因为 + 运算符不支持 BigDecimal 类型。
正确做法: 使用 BigDecimal 提供的 add 方法。
java
// 累计指标分配金额 BigDecimal sumtotal = BigDecimal.ZERO; // 推荐使用静态常量 ZERO // 计算累计指标分配金额 sumtotal = sumtotal.add(allocateDetail.getTotal());
关键点说明:
-
BigDecimal是不可变的:每次运算(如add)都会返回一个新的BigDecimal对象,原对象不变,因此必须重新赋值。 -
初始化推荐使用
BigDecimal.ZERO:避免直接new BigDecimal(0)产生额外的对象开销。 -
allocateDetail.getTotal()也应为BigDecimal类型,如果不是,需要先转换为BigDecimal(例如使用BigDecimal.valueOf(double)或new BigDecimal(String))。
示例完整代码:
java
BigDecimal sumtotal = BigDecimal.ZERO;
for (AllocateDetail allocateDetail : list) {
sumtotal = sumtotal.add(allocateDetail.getTotal());
}
如果 getTotal() 返回的是 double 或 String,请先转换:
java
BigDecimal total = new BigDecimal(allocateDetail.getTotal()); // 或 valueOf sumtotal = sumtotal.add(total);
总结:在 Java 中操作 BigDecimal,必须使用其 API 方法,而不能使用算术运算符。
2391

被折叠的 条评论
为什么被折叠?



