如何添加到BigDecimal

时间:2014-11-06 07:05:02

标签: java

我有以下函数在数组上进行迭代,在每个'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类型的值

2 个答案:

答案 0 :(得分:12)

您需要使用add的返回值,因为BigDecimal是不可变的。所以你想要:

total = total.add(refund.getAmountPayable());

(就我个人而言,如果该方法被称为plus而不是add,我认为这会更明显,但不要介意。)

答案 1 :(得分:0)

Jon Skeet的回答是正确的。以下是BigDecimal#add的API javadoc:

  
    

返回一个BigDecimal,其值为(this + augend),其标度为max(this.scale(),augend.scale())。