我是Java的新手,我有一个程序可以生成52种不同的股票价格,范围从0到大约2000.我的程序还生成N个不同的股票价格"路径".我想知道这52种股票价格的产品是什么.我决定使用BigDecimal.
BigDecimal[] productOfStock1 = new BigDecimal[N+1];
for(int k = 1; k <= N; k++){
productOfStock1[k] = BigDecimal.ONE;
}
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()));
}
productOfStock1[k] = productOfStock1[k].multiply(BigDecimal.valueOf(stockPrice[k][i]));
System.out.println("Stock at [" + i + "] for N = " + N + " and path number " + k + " …Run Code Online (Sandbox Code Playgroud) 我是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]);
}
} …Run Code Online (Sandbox Code Playgroud)