如何在PHP中计算出π的值,且精确到X位小数。
保留4位小数
3.141
保留64位小数
3.141592653589793238462643383279502884197169399375105820974944592
我找到了Konamiman发布的损坏链接的来源。
将结果与http://www.angio.net/pi/digits/50.txt进行比较,它们是相同的。
// 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);
如何在php中计算PI?
既然我们已经有了M_PI
常量,为什么还要计算呢?
M_PI
包含值3.14159265358979323846
。
10000位小数的PI是相当大的数字。
pi()
/M_PI
的精度。不确定是否能够设置到11^H 100K。 :) http://php.net/manual/en/function.pi.php - deceze据我所知,PHP无法保存那么长的数字,但22/7是一种古老的计算圆周率的方法,尽管这并不比PHP中包含的圆周率常数更好。也许你正在尝试输出一个很长的圆周率字符串作为练习。
3
不在小数位上(小数点后的数字位),因此这些数字分别只有3和63个小数位。 - ajp15243