2014-03-24 76 views
0

我在Java上有點新手,我必須將範圍從0到2000的任何地方的52個數字相乘。我已經嘗試使用* =沒有BigDecimal,但結果爲0.0。BigDecimal乘法返回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); 

這給了我0E-637,而不是它應該是給我很大的數字。任何幫助表示讚賞。

回答

5
BigDecimal productOfStock1 = BigDecimal.ZERO; 

你需要1對它進行初始化,因爲

0 * X = 0 

(除X = 1/0 :))

+0

哈哈謝謝。我現在覺得很愚蠢。 – user3251256

+0

歡迎您:) –

1

不要初始化productOfStock1爲0,使用1代替。否則,你總是會乘以0.