有這個代碼。問題是以下幾點:numar計算它應該,但未能添加到pi,它仍然是0.0,保持不變。爲什麼?BigDecimal添加問題
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;
}
}
}
EDIT(編輯爲Reimeus說): 如果該方法的參數是高於3,它拋出的StringIndexOutOfBoundsException。爲什麼?
對於第二部分來說,你的字符串是「4.0」,所以你不能得到第4個字符...... – Reimeus