How can pi be calculated to a set number of digits in PHP?

本秂侑毒 提交于 2019-12-30 06:54:48

问题


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.



来源:https://stackoverflow.com/questions/1788519/how-can-pi-be-calculated-to-a-set-number-of-digits-in-php

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!