【问题标题】:add BigDecimal in order to have a running total添加 BigDecimal 以获得运行总计
【发布时间】:2012-06-11 15:26:05
【问题描述】:

我想为您挑选有关 BigDecimal 的布赖恩。我有一个方法,它应该有一个累计到期总金额的方法。在这里:

private BigDecimal addUpTotal(BillRec bill, BigDecimal runningTotal) {
    BigDecimal result = new BigDecimal(0);

    if (bill.getBillInfo().getBillSummAmtSize() > 0) {
        for (int x = 0; x < bill.getBillInfo().getBillSummAmtSize(); x++) {
            if ("TotalAmtDue".equals(bill.getBillInfo().getBillSummAmt(x).getBillSummAmtCode().getCode().toString())) {
                result = runningTotal.add(bill.getBillInfo().getBillSummAmt(x).getAmt());                  
            }
        }
    }      
    return result;
}

问题是我怎么称呼它? 意思是当我调用它时,我如何跟踪总数?请注意,您可以看到我将 runningTotal 作为参数传递,但不确定如何将值保留在我将调用它的方法中。

【问题讨论】:

  • 你真的是想让结果只依赖于 last 匹配吗?

标签: java numbers bigdecimal cumulative-sum


【解决方案1】:

怀疑你的意思是这样的:

private BigDecimal addUpTotal(BillRec bill, BigDecimal runningTotal) {
    if (bill.getBillInfo().getBillSummAmtSize() > 0) {
        for (int x = 0; x < bill.getBillInfo().getBillSummAmtSize(); x++) {
            if (...) {
                runningTotal = runningTotal.add(...);
            }
        }
    }      
    return runningTotal;
}

您可以使用局部变量来调用它来保持运行总计:

BigDecimal runningTotal = BigDecimal.ZERO;

for (BillRec bill : bills) {
    runningTotal = addUpTotal(bill, runningTotal);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多