我在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,但是两种方法都给出相同的零值。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在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
元素的总和并打印出来。