我怎样才能计算在PHP的pi值到X十进制数。pi如何计算到PHP中的一组数字?
4小数点
3.141
64个小数点
3.141592653589793238462643383279502884197169399375105820974944592
我怎样才能计算在PHP的pi值到X十进制数。pi如何计算到PHP中的一组数字?
4小数点
3.141
64个小数点
3.141592653589793238462643383279502884197169399375105820974944592
在php中计算PI?
为什么计算当我们已经有M_PI
常量?
M_PI
包含值3.14159265358979323846
。
PI的10000小数位数不胜枚举。
PHP不能容纳一个数字,只要据我所知,但22/7是一种古老的方法来计算PI,尽管这会不会比包含在PHP中的PI常数更好。也许你试图输出一串长长的PI作为练习。
22/7很难准确;本地PHP常量至少精确到给定系统上的可能精度。 – Dan 2013-12-18 05:24:28
发现破碎的链接的来源@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);
你可以通过Chudnosky系列计算Pi。如果你有一个非常高的内存的服务器,你可以很容易地计算Pi到许多小数位。如果你想把它带到某个特定的小数位,那么请增加一个非常大的数字,并使用substr将它缩短到所需的小数位。如果你认为这个过程非常缓慢,那么你可以通过在谷歌搜索获得pi值。
这是一个非常缓慢的方式来做到这一点,因为该系列收敛缓慢。 – 2014-08-18 10:14:52
@Salixalba你能看到,我写过那里'...一个非常高的内存服务器...'。 – 2014-08-18 10:19:06
从http://en.wikipedia.org/wiki/Leibniz_formula_for_%CF%80使用该系列的直接求和计算π到10个正确的小数位数需要大约5,000,000,000个项。对这个问题投入更多的内疚并不会更好地尝试一种不同的公式,例如http://en.wikipedia.org/wiki/Approximations_of_%CF%80 – 2014-08-18 10:35:41
主要问题是pi计算值高达100000十进制数字... – d3vdpro 2009-11-24 08:10:00
Nit挑剔,但'3'不在小数点位置(小数点后的数字位置,'.'),所以这些数字只有3位和63位十进制数字。 – ajp15243 2014-09-07 02:37:21