Как рассчитывается пи (π)? - PullRequest
34 голосов
/ 16 апреля 2010

Как я могу написать функцию, которая будет возвращать число pi (π) для заданного числа десятичных знаков?

Скорость не имеет значения. Я смотрю на http://bellard.org/pi/,, но до сих пор не понимаю, как получить n-ю цифру числа пи.

Ответы [ 13 ]

2 голосов
/ 16 апреля 2010

Вы можете указать точность на основе последнего слагаемого, которое вы добавили (или вычли). Поскольку амплитуда каждого члена в последовательности Алана всегда уменьшается, а каждый член меняется по знаку, сумма не изменится больше, чем последний член.

Перевод этой болтовни: после добавления 1/5 сумма не изменится более чем на 1/5, так что вы с точностью до 1/5. Конечно, вам придется умножить это на 4, так что вы на самом деле точны только до 4 / 5.

К сожалению, математика не всегда легко переводится в десятичные цифры.

0 голосов
/ 23 ноября 2017
pi = function () {
    let pi = 3;
    let a = 3;
    let even = false;
    let turn;

    while (a <= 90000) {
        turn = (4/((Math.pow(a, 3)) - (a)));

        if(even){
            turn = turn*-1;
            even = false;
        } else {
            even = true;
        }
        pi = pi + turn;
        a = a + 2;
    }
    return pi;
};
0 голосов
/ 20 мая 2011

Считайте, что это грубый набросок, но это простой подход, который может реализовать новичок.

int x = 9;
double pi = double(22/7);
String piAsString = pi.toString();
String valueAtXPosition = piAsString.subString(x, x+1);
int valueAtXPosAsInt = Integer.parseInt(valueAtXPosition);
...