-->

How can pi be calculated to a set number of digits

2019-02-14 06:08发布

问题:

How can I calculate the value of pi in PHP up to X decimal numbers.

4 decimal points

3.141

64 decimal points

3.141592653589793238462643383279502884197169399375105820974944592

回答1:

Found the source for the broken link @Konamiman posted.

Compared the results to: http://www.angio.net/pi/digits/50.txt and they are the same.

// Source: http://mgccl.com/2007/01/22/php-calculate-pi-revisited
function bcfact($n)
{
    return ($n == 0 || $n== 1) ? 1 : bcmul($n,bcfact($n-1));
}
function bcpi($precision)
{
    $num = 0;$k = 0;
    bcscale($precision+3);
    $limit = ($precision+3)/14;
    while($k < $limit)
    {
        $num = bcadd($num, bcdiv(bcmul(bcadd('13591409',bcmul('545140134', $k)),bcmul(bcpow(-1, $k), bcfact(6*$k))),bcmul(bcmul(bcpow('640320',3*$k+1),bcsqrt('640320')), bcmul(bcfact(3*$k), bcpow(bcfact($k),3)))));
        ++$k;
    }
    return bcdiv(1,(bcmul(12,($num))),$precision);
}

echo bcpi(1000);


回答2:

Calculating PI in php?

Why calculate when we already have the M_PI constant?

M_PI contains the value 3.14159265358979323846.

10000 decimal places for PI is quite a number.

See: http://www.php.net/manual/en/math.constants.php



回答3:

You can calculate Pi by the Chudnosky series. If you have a server with a very high ram you can easily calculate Pi to many decimal places. If you want to get it to some specific decimal place then, increase the efforts to a really large number and use substr to shorten it to your required decimal place. If you think this process is very slow, then you can get pi value by searching it on google.



回答4:

PHP cannot hold a number that long as far as I know, but 22/7 is an ancient way to calculate PI, though that will not be any better than the PI constant included in PHP. Perhaps you are trying to output a long string of PI as an exercise.



标签: php math pi