Следующий код не дает мне никаких ошибок, но он не вычисляет Pi правильно. Пожалуйста, посмотрите, можете ли вы узнать, что я делаю неправильно.Невозможно рассчитать PI, Не дает мне никакой ошибки
Основной метод:
public static void main(String [] args){
Pi obj1=new Pi();
System.out.println("The answer is: " + obj1.calculatePi(20));
}
calculatePi метод:
public BigDecimal calculatePi (int iterations) {
BigDecimal result = new BigDecimal(0); // The result (summation of Taylor series)
BigDecimal nextTerm= new BigDecimal(0);
BigDecimal j= new BigDecimal(2);
BigDecimal i= new BigDecimal(4);
BigDecimal num= new BigDecimal(16);
BigDecimal oddNum = new BigDecimal(1); // Odd numbers (1, 3, 5, 7 etc.)
BigDecimal pow5 = new BigDecimal(5); // Odd powers of 5 (5^1, 5^3, 5^5 etc.)
BigDecimal pow239 =new BigDecimal(239); // Odd powers of 239 (239^1, 239^3, 239^5 etc.)
BigDecimal sign = new BigDecimal(1); // Either 1 or -1 indicating the sign of the next term
for (int count = 0; count < iterations; count++) { // Calculate and add the next term in the series.
// The sign of each new term alternates.
nextTerm = num.divide (pow5.multiply(oddNum),100,BigDecimal.ROUND_HALF_UP).subtract (i.divide (pow239.multiply(oddNum),100, BigDecimal.ROUND_HALF_UP));
result= sign.multiply(nextTerm).add(result); // Update variables for next time around loop
pow5 = pow5.multiply(pow5).multiply(pow5);
pow239 = pow239.multiply(pow239).multiply(pow239);
oddNum= oddNum.add(j);
sign = sign.subtract(sign); }
return result;
}
После очистки форматирования, возможно, также можно обеспечить ожидаемый/фактический выход? – sheltem
Ожидаемый результат - это то, что я хочу вычислить PI на тысячи мест. – user3298474