【问题标题】:I cannot add two BigDecimal objects [duplicate]我无法添加两个 BigDecimal 对象 [重复]
【发布时间】:2021-09-30 22:26:53
【问题描述】:

当我想将两个 BigDecimal 对象相加时

public void addBalanceWallet(BigDecimal balanceWallet) {
        this.balanceWallet.add(balanceWallet);
}

没有效果。此外,IDE 显示

为什么我不能将这两个对象加在一起?

【问题讨论】:

  • BigDecimal 对象是不可变的。返回加法的结果。例如,您可以计算 this.balanceWallet = this.balanceWallet.add(balanceWallet);
  • ...当您将这两个值相加时,您想对总和做什么?
  • 我正在增加用户钱包的余额。我使用 BigDecimal 是因为它具有很高的精度,但我可以看到它毫无意义。
  • 顺便说一句,如果这是用于比特币,你根本不需要 BigDecimal,因为未完成的 satoshis 总数永远不会超过大约 2e15,这比 Java(签名)long 可以处理的要少千分之一,任何一个钱包都会更少。
  • “不可变”是Javadoc for BigDecimal中的第一个词。

标签: java


【解决方案1】:

您没有将返回值(这是加法的实际结果)分配给任何东西,因此“结果(...)被忽略”消息。我猜你想做以下事情:

public void addBalanceWallet(BigDecimal balanceWallet) {
    this.balanceWallet = this.balanceWallet.add(balanceWallet);
}

【讨论】:

    【解决方案2】:

    您必须保存返回值。 例如:

    public BigDecimal addBalanceWallet(BigDecimal balanceWallet) {
            return this.balanceWallet.add(balanceWallet);
    }
    
    

    然后:

    BigDecimal addResult = this.balanceWallet.addBalanceWallet(some_big_decimal)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-02
      • 2021-07-28
      • 1970-01-01
      • 2014-07-06
      • 2021-11-03
      • 2023-02-08
      • 2021-11-01
      • 1970-01-01
      相关资源
      最近更新 更多