微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用PHP计算Pi

好吧,这只是我和我的同事正在玩的东西.
我们知道 PHP有它自己的PI功能,但这是出于理论和好奇心.

所以我们想知道PHP是否以及如何计算pi.
配方pi =π= 4/1 – 4/3 4/5 – 4/7 4/9 ……

这是我们做的:

$theValue = 100;// the max
   for ($i=1; $i<$theValue; $i++){
   if ($i % 2 == 1){
       $iWaardes[] =  4 / $i; // divide 4 by all uneven numbers and store them in an array
    }
}
// Use the array's $keys as incrementing numbers to calculate the $values.
for ($a=0,$b=1,$c=2; $a<$theValue; $a+=3,$b+=3,$c+=3 ){
    echo ($iWaardes[$a] - $iWaardes[$b] + $iWaardes[$c]).'<br>';
}

所以现在我们有一个循环计算了第一个4/1 – 4/3 4/5系列,但它在此之后停止并从以下3个序列开始.
我们如何让它运行整个$theValue并计算整个系列?

请记住,这不是什么严重的事情,对我们来说只是一个有趣的实验.

解决方法

只需使用一个循环.有一个$bottom变量,你在每次迭代时加2,除以它,并根据模数加/减它:

$theValue = 10000; // the max
$bottom = 1;
$pi = 0;
for ($i = 1; $i < $theValue; $i++) {
    if ($i % 2 == 1) {
        $pi += 4 / $bottom;
    } else {
        $pi -= 4 / $bottom;
    }
    $bottom += 2;
}
var_dump($pi); // 3.14169266359

Demo

你的代码有什么问题(除了没有用适当的数字除外)是第二个循环.您出于某种原因打印出存储的数字3乘以3.这直到$a,增加3,低于$theValue,这要高得多.因此,例如,如果$theValue为10,则在开始出现绑定错误之前只需要2个循环.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐