首页 > 解决方案 > Java 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,尽管我明确设置了剩余金额。有什么我想念的吗?我看过的每个问题似乎都表明我这样做是正确的。

编辑:只是为了表明我没有发疯或遗漏一些明显的东西: 在此处输入图像描述

和: 在此处输入图像描述

标签: javaandroidmathbigdecimal

解决方案


问题是因为我用来验证操作结果的手表被留在里面,它覆盖了我的代码正在做的事情,这是一个简单的用户错误,关闭了这个问题。


推荐阅读