이 코드가 있습니다. 문제는 다음과 같습니다. numar는 필요에 따라 계산하지만 변경되지 않은 pi에 추가하지 못합니다. 왜?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"그래서 네 번째 문자를 얻을 수 없습니다 ... – Reimeus