BigDecimal乘法返回0?

use*_*256 0 java bigdecimal

我是Java的新手,我必须将52个数字相乘,范围从0到2000.我已经尝试使用*=没有BigDecimal,但结果给了我0.0.

这是我的代码:

BigDecimal productOfStock1 = BigDecimal.ZERO;

for(int k = 1; k <= N; k++){

    for(int i = 1; i <= n; i++){
      if (i == 1){
        stockPrice[k][i] = stockZero*Math.pow(e, form + sigma*(randomno.nextGaussian()));
      }
      else {
        stockPrice[k][i] = stockPrice[k][i-1]*Math.pow(e, form + sigma*(randomno.nextGaussian()));

      }
      //sumOfStock += stockPrice[k][i];
      //productOfStock *= stockPrice[k][i];
      productOfStock1 = productOfStock1.multiply(BigDecimal.valueOf(stockPrice[k][i]));

      System.out.println(/*"Stock at [" + i + "] for N = " + N + "  and path number " + k + " is " + */stockPrice[k][i]);


  }
  }

System.out.println(productOfStock1);
Run Code Online (Sandbox Code Playgroud)

这给了我0E-637而不是它应该给我的大数字.任何帮助表示赞赏.

Jig*_*shi 5

BigDecimal productOfStock1 = BigDecimal.ZERO;
Run Code Online (Sandbox Code Playgroud)

你需要初始化它1,因为

0 * X = 0
Run Code Online (Sandbox Code Playgroud)

(除了X = 1/0 :))