Java: Почему этот цикл BigDecimal не работает?
Я пытаюсь вычислить число Пи с помощью метода Грегори-Лейбница по указанному пользователем количеству десятичных знаков. Я никогда не работал с BigDecimal
класс, поэтому я не знаю, что мне здесь не хватает.
Простое объяснение метода Лейбница можно найти здесь (метод 3).
По сути, он начинается с дроби 4/n, где n = 1, и чередуется между вычитанием и сложением дроби 4/n, увеличивая n до следующего нечетного целого числа на каждой итерации.
Программа выводит просто 5
, независимо от того, сколько десятичных знаков указано.
Мой код:
public static void calculatePi(int decimals) {
BigDecimal pi = new BigDecimal(0.0);
pi.setScale(decimals); // Set how many decimal points to use.
boolean plus = true; // Add on the next iteration?
int denominator = 1;
BigDecimal nextVal = new BigDecimal((4/denominator));
for(int i=0; i<decimals; i++)
{
if(plus == true) {
pi = pi.add(nextVal);
} else {
pi = pi.subtract(nextVal);
}
denominator += 2;
nextVal = new BigDecimal(4/denominator);
plus ^= false; // Flip value of plus each iteration
}
System.out.println(pi.toPlainString());
}