2009-11-24 47 views
5

我怎樣才能計算在PHP的pi值到X十進制數。pi如何計算到PHP中的一組數字?

4小數點

3.141

64個小數點

3.141592653589793238462643383279502884197169399375105820974944592

+0

主要問題是pi計算值高達100000十進制數字... – d3vdpro 2009-11-24 08:10:00

+0

Nit挑剔,但'3'不在小數點位置(小數點後的數字位置,'.'),所以這些數字只有3位和63位十進制數字。 – ajp15243 2014-09-07 02:37:21

回答

0

在php中計算PI?

爲什麼計算當我們已經有M_PI常量?

M_PI包含值3.14159265358979323846

PI的10000小數位數不勝枚舉。

參見:http://www.php.net/manual/en/math.constants.php

+3

顯然你可以在php.ini中設置'pi()'/'M_PI'的精度。不知道它是否會達到11^H 100K。 :) http://php.net/manual/en/function.pi.php – deceze 2009-11-24 09:21:06

+1

太糟糕了,顯然它只能達到48,至少在我的系統上。 :) – deceze 2009-11-24 09:34:33

+0

感謝欺騙工作! – mauris 2009-11-24 10:05:00

-4

PHP不能容納一個數字,只要據我所知,但22/7是一種古老的方法來計算PI,儘管這會不會比包含在PHP中的PI常數更好。也許你試圖輸出一串長長的PI作爲練習。

+3

22/7很難準確;本地PHP常量至少精確到給定系統上的可能精度。 – Dan 2013-12-18 05:24:28

3

發現破碎的鏈接的來源@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); 
0

你可以通過Chudnosky系列計算Pi。如果你有一個非常高的內存的服務器,你可以很容易地計算Pi到許多小數位。如果你想把它帶到某個特定的小數位,那麼請增加一個非常大的數字,並使用substr將它縮短到所需的小數位。如果你認爲這個過程非常緩慢,那麼你可以通過在谷歌搜索獲得pi值。

+0

這是一個非常緩慢的方式來做到這一點,因爲該系列收斂緩慢。 – 2014-08-18 10:14:52

+1

@Salixalba你能看到,我寫過那裏'...一個非常高的內存服務器...'。 – 2014-08-18 10:19:06

+0

從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