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());
}

0 ответов

Другие вопросы по тегам