有这个代码.问题如下:numar计算应该如此,但无法添加到pi,它保持0.0,不变.为什么?
public static void piLeibniz(int numarZecimale)
{
String piReal = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679";
long t1 = System.currentTimeMillis();
BigDecimal numar ;
BigDecimal pi = new BigDecimal("0.0");
for(int i = 0; i<=100000000;i++)
{
numar = new BigDecimal( 4*((Math.pow(-1, i))/((2*i)+1)));
pi = pi.add(numar);
//System.out.println(numar);
String piString = pi.toString();
System.out.println(piString);
if(!piString.substring(0, numarZecimale).equals(piReal.substring(0, numarZecimale)))
{
} else {
long t2 = System.currentTimeMillis();
System.out.println("Pi este:" + piReal.substring(0, numarZecimale)+ " calculat in " + (t2-t1) + " ms");
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑(编辑为Reimeus说):如果方法的参数高于3,则抛出StringIndexOutOfBoundsException.为什么?
add返回一个BigDecimal不可变的新值.原始值需要分配给方法的结果,否则值pi将保持其原始值
pi = pi.add(numar);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |