PHP:

function pai($n = 100)
{
    $w = $n + 10;
    $b = bcpow(10, $w);
    $rtemp = bcmul($b, 4);
    $x1 = bcdiv($rtemp, 5);
    $x2 = bcdiv($b, -239);
    $he = bcadd($x1, $x2);
    $n = $n * 2;
    for ($i = 3; $i < $n; $i = $i + 2) {
        $x1 = bcdiv($x1, -25);
        $x2 = bcdiv($x2, -57121);
        $x = bcdiv(bcadd($x1, $x2), $i);
        $he = bcadd($he, $x);
    }
    $pai = bcmul($he, 4);
    $pai = bcdiv($pai, bcpow(10, 10));
    return $pai;
}

JS:

要在 JavaScript 中使用 BigInt,只需要在整数字面量后面加上“n”后缀。
要增加计算的位数,只需要简单地增加zhishu的指数,如计算一百万位:1000020n。
位数越多需要的事件越久。

function pai(zhishu = 1020n){
    let i = 1n;
    let x = 3n * (10n ** zhishu);
    let pi = x;
    while (x > 0) {
        x = x * i / ((i + 1n) * 4n);
        pi += x / (i + 2n);
        i += 2n;
    }
    return (pi / (10n ** 20n)).toString();
}