2014-03-24 3 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 것이 아니라, 저를주고 가정되는 큰 숫자 제공 :

여기 내 코드입니다. 어떤 도움을 주셔서 감사합니다. 당신이 1로를 초기화해야

답변

5
BigDecimal productOfStock1 = BigDecimal.ZERO; 

,

0 * X = 0 

(X를 제외하고는 = 1/0 :))

+0

감사합니다. 나는 지금 어리 석다. – user3251256

+0

당신은 환영합니다 :) –

1

0 productOfStock1를 초기화하지 않기 때문에, 1을 사용 대신. 그렇지 않으면 항상 0을 곱합니다.