How to add to a BigDecimal

I have the following function that itterates over an array, calls a method on each 'Refund' object that returns a BigDecimal that contains some value e.g. 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();
}   

The problem is that it always returns '0.00'. I know for a fact that the array that I'm passing is not null, and the values that their 'getAmountPayable()' function retuns are also not null or equal to 0. I don't know if I've been staring at this for too long and I'm missing the obvious, some help would greatly be appreciated.

PS - 'getAmountPayble()' return a value of type BigDecimal

Jon Skeet
people
quotationmark

You need to use the return value of add, because BigDecimal is immutable. So you want:

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

(Personally I think this would have been more obvious if the method had been called plus rather than add, but never mind.)

people

See more on this question at Stackoverflow