Java BigDecimal减法在调试器中导致零,但不会将结果应用于变量

时间:2019-01-20 20:03:19

标签: java android math bigdecimal

我有一段代码可以对付款进行连续计数,以查看是否已为物业支付租金,代码如下:

BigDecimal remainingAmount = MathUtilities.roundBigDecimal(new BigDecimal(amountDue.getAmount().doubleValue()));

    for(RentPayment payment : this.rentPayments) {
        remainingAmount = remainingAmount.subtract(payment.getAmountPaid().getAmount());
    }

    return remainingAmount;

因此,在这里,所有需要发生的就是需要退还剩余金额,因此我们知道已为特定发票支付了多少租金。当我在调试器中运行此命令时,它执行的是235.66-235.66,逻辑结果为0:

remainingAmount.subtract(payment.getAmountPaid().getAmount());

但是,正常运行此代码时,即使我显式设置了剩下的金额,无论235.66的多少付款,结果始终是235.66。有什么我想念的吗?我看过的每个问题似乎都表明我做得正确。

编辑:只是为了表明我并不疯狂或缺少明显的东西: enter image description here

并且: enter image description here

1 个答案:

答案 0 :(得分:0)

问题是因为我用来验证操作结果的手表被遗留了,并且覆盖了我的代码在做的事情,这是一个简单的用户错误,导致了这个问题的解决。