在 java 中添加 BigDecimal 数组的元素

Adding the elements of a BigDecimal Array in java

我是 Java 的新手,我在我的程序中遇到了这个错误,我无法在 BigDecimal 元素数组中添加元素。我成功地使用 Integer 和 Double 类型实现了它,但是当我将类型更改为 BigDecimal 时,它根本不起作用。

import java.math.*;
import java.util.*;
public class AddBigRealNumbers {

public static void main(String[] args) {
    try{

        Scanner von = new Scanner(System.in);
        System.out.println("Enter the number of figures to be added:");
        int numfig;
        numfig = von.nextInt();
        BigDecimal []nums = new BigDecimal[numfig];

        System.out.println("Enter the elements:");

        for(int i=0; i<numfig;i++){
            nums[i]=von.nextBigDecimal();
        }
        System.out.println("The elements are: ");
        for(int i=0; i<numfig;i++){
            System.out.println(nums[i]);
        }
        BigDecimal sum=BigDecimal.ZERO;
        for (BigDecimal i : nums)
            sum += i;
        System.out.println("The sume of these numbers is:"+sum);



    }
    catch(Exception e){
        System.out.println("Your exception is:" +e);
    }

}

}

你不能用 + 添加 BigDecimal,你必须使用它的 add() 功能。它也是不可变的,因此对整个加法使用相同的 BigDecimal 和是行不通的。

BigDecimal 不仅仅是 Integer 和 Double 等数字的另一个 class。

Because BigDecimal is immutable as LisaMM pointed out, you will need to increment your sum like so:

for (BigDecimal i : nums) {
        sum = sum.add(i);
}

...

sum.add(i);  <-- this wont't work

相反,我们需要将新的 BigDecimal 重新分配给 sum,使用其当前值增加 i

BigDecimal sum = null;
for (int i = 0; i < lengthOfArray; i++) {
    if (sum == null) {
        sum = data[i];
    } else {
        sum = sum.add(data[i]);
    }
}