【问题标题】:Java BigDecimal subtraction results in zero in debugger, but does not apply the result to variableJava BigDecimal 减法在调试器中导致零,但不会将结果应用于变量
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多