【发布时间】:2019-06-14 06:44:48
【问题描述】:
我有一段代码对付款进行计数以查看是否已为房产支付租金,代码如下:
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,尽管我明确设置了剩余金额。有什么我想念的吗?我看过的每一个问题似乎都表明我这样做是正确的。
【问题讨论】:
-
你确定rentPaments不是空的吗?
-
100%,我已经完成了大约 50 次,一切似乎都按照应有的方式运行,除了减法的结果虽然正确,但不坚持剩余金额。跨度>
-
我看不出为什么这不起作用,但由于这不是minimal reproducible example,我无法自己确认。你能提供一些我可以粘贴到我的 IDE 中并验证的东西吗?
-
如果您插入 235.66 作为剩余金额和付款金额而不是那些对象获取器,它将与我的相同(只有一笔付款),请参阅我的编辑以了解调试器必须说的内容这段代码。
-
调试器中的第一条和第三条蓝色语句分配
remainingAmount。
标签: java android math bigdecimal