Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中,如何将pi计算为一组数字?_Php_Math_Pi - Fatal编程技术网

在PHP中,如何将pi计算为一组数字?

在PHP中,如何将pi计算为一组数字?,php,math,pi,Php,Math,Pi,如何在PHP中计算pi的值,直到X个十进制数 4个小数点 3.141 64个小数点 3.1415926535897932384626433832790288419169399375105820974944592 用php计算PI 既然我们已经有了M_PI常数,为什么还要计算呢 M_PI包含值3.14159265358979323846 PI的小数点后10000位是一个相当大的数字 请参阅:据我所知,PHP无法保存那么长的数字,但22/7是一种古老的计算PI的方法,尽管它不会比PHP中包含的PI常

如何在PHP中计算pi的值,直到X个十进制数

4个小数点

3.141

64个小数点

3.1415926535897932384626433832790288419169399375105820974944592

用php计算PI

既然我们已经有了
M_PI
常数,为什么还要计算呢

M_PI
包含值
3.14159265358979323846

PI的小数点后10000位是一个相当大的数字


请参阅:

据我所知,PHP无法保存那么长的数字,但22/7是一种古老的计算PI的方法,尽管它不会比PHP中包含的PI常量更好。也许您正试图输出一长串PI作为练习。

找到了@Konamiman post的断开链接的来源

将结果与:进行比较,它们是相同的

// 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);
//来源:http://mgccl.com/2007/01/22/php-calculate-pi-revisited
函数bcfact($n)
{
返回($n==0 | |$n==1)?1:bcmul($n,bcfact($n-1));
}
函数bcpi($精度)
{
$num=0;$k=0;
bcscale(精度+3美元);
$limit=($precision+3)/14;
而($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;
}
返回bcdiv(1,(bcmul(12,($num)),$precision);
}
回波bcpi(1000);

您可以通过Chudnosky级数计算Pi。如果您的服务器具有非常高的ram,那么您可以轻松地将Pi计算到小数点后许多位。如果你想把它放到某个特定的小数位,那么就加大力度到一个非常大的数字,并用它把它缩短到你需要的小数位。如果你认为这个过程非常慢,那么你可以在谷歌上搜索pi值。

主要的问题是计算多达100000个十进制数的pi值…不太挑剔,但是
3
不在十进制位置(小数点后的数字位置,
),所以这些数字只有3和63个十进制数字,显然,您可以在php.ini中设置
pi()
/
M_pi
的精度。但不确定是否达到11^H 100K.:)太糟糕了,显然它只会进入48,至少在我的系统上是这样。:)22/7几乎不准确;本机PHP常量至少精确到给定系统上可能的精度。这是一种非常缓慢的方法,因为级数收敛缓慢。@Salixalba你能看到,我在那里写过“…一台ram非常高的服务器…”。使用数列的直接求和计算π到10个正确的小数位需要大约5000000000项。在这个问题上投入更多的内存并不能更好地尝试一个不同的公式,就像在