BigDecimal.add方法不生效
BigDecimal promotionPriceTotalExceptLast = BigDecimal.ZERO;
BigDecimal promotionPriceTota = new BigDecimal(15)
promotionPriceTotalExceptLast.add(promotionPriceTota);
System.out.println(promotionPriceTotalExceptLast);
//输出0
原因:通过看BigDecimal.add()方法的源码发现,
add方法返回的是一个BigDecimal对象,
所以是不能改变自身值得,只能用一个新对象去接收add方法改变后对象
因此正确的做法应该是:
promotionPriceTotalExceptLast = promotionPriceTotalExceptLast.add(promotionPriceTota);
附上add的源码
public BigDecimal add(BigDecimal augend) {
if (this.intCompact != INFLATED) {
if ((augend.intCompact != INFLATED)) {
return add(this.intCompact, this.scale, augend.intCompact, augend.scale);
} else {
return add(this.intCompact, this.scale, augend.intVal, augend.scale);
}
} else {
if ((augend.intCompact != INFLATED)) {
return add(augend.intCompact, augend.scale, this.intVal, this.scale);
} else {
return add(this.intVal, this.scale, augend.intVal, augend.scale);
}
}
}