开发者社区 问答 正文

BigDecimal数组的总和始终为零

我在Java中有一个BigDecimal数组,我想计算该数组所有元素的总和。我正在尝试以下代码:

```js

public static void main(String[] args) { BigDecimal[] res = { new BigDecimal("20849603980134001723930671666823555245252804609722") ,new BigDecimal("53503534226472524250874054075591789781264330331690")}; BigDecimal sum = BigDecimal.ZERO; //BigDecimal sum = new BigDecimal("0"); for(BigDecimal s : res) sum.add(s); System.out.println(sum); }

我的问题是sum变量为零:

```js
run:
0
BUILD SUCCESSFUL (total time: 0 seconds)

我用两种方法创建了sum var,但是两种方法都给出相同的零值。

展开
收起
几许相思几点泪 2019-12-03 16:18:19 642 分享 版权
阿里云 AI 助理回答

在Java中,BigDecimal的加法操作是不可变的,这意味着每次调用add()方法时,它并不会修改原始的BigDecimal对象,而是返回一个新的BigDecimal对象表示加法的结果。因此,你需要将add()方法的结果赋值回sum变量,否则sum不会改变。

下面是修正后的代码:

import java.math.BigDecimal;

public class BigDecimalSumExample {
    public static void main(String[] args) {
        BigDecimal[] res = { 
            new BigDecimal("20849603980134001723930671666823555245252804609722"),
            new BigDecimal("53503534226472524250874054075591789781264330331690")
        };
        
        BigDecimal sum = BigDecimal.ZERO;
        
        for(BigDecimal s : res) {
            // 修正:将add()的结果重新赋值给sum
            sum = sum.add(s);
        }
        
        System.out.println(sum);
    }
}

这段修正后的代码将会正确地计算数组中所有BigDecimal元素的总和并打印出来。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址: