我有以下函数在数组上进行迭代,在每个'Refund'对象上调用一个方法,该方法返回一个包含一些值的BigDecimal,例如: 20.45:
private String getTransactionTotals(Refund[] refunds) {
BigDecimal total = new BigDecimal(0.00);
/*
* Itterates over all the refund objects and adds
* their amount payables together to get a total
*/
for ( Refund refund : refunds ) {
total.add(refund.getAmountPayable());
}
total = total.setScale(2, RoundingMode.CEILING);
return total.toString();
}
问题是它总是返回'0.00'。我知道我传递的数组不是null,而且'getAmountPayable()'函数返回的值也不是null或者等于0.我不知道我是不是一直盯着这太长了,我错过了明显的,一些帮助将非常感激。
PS - 'getAmountPayble()'返回BigDecimal类型的值
答案 0 :(得分:12)
您需要使用add
的返回值,因为BigDecimal
是不可变的。所以你想要:
total = total.add(refund.getAmountPayable());
(就我个人而言,如果该方法被称为plus
而不是add
,我认为这会更明显,但不要介意。)
答案 1 :(得分:0)
返回一个BigDecimal,其值为(this + augend),其标度为max(this.scale(),augend.scale())。