2009-11-24 3 views
5

Comment puis-je calculer la valeur de pi en PHP jusqu'à X nombres décimaux.Comment pi peut-il être calculé en nombre de chiffres en PHP?

4 décimales

3,141

64 points décimaux

3,141592653589793238462643383279502884197169399375105820974944592

+0

le problème principal est de calculer la valeur de pi jusqu'à 100000 nombres décimaux ... – d3vdpro

+0

Nit difficile, mais le «3» n'est pas dans une position décimale (une position numérique après la virgule, «.»), De sorte que ces chiffres seulement 3 et 63 chiffres décimaux, respectivement. – ajp15243

Répondre

0

Calcul de PI en PHP? Pourquoi calculer quand nous avons déjà la constante M_PI?

M_PI contient la valeur 3.14159265358979323846.

10000 décimales pour PI est un nombre assez important.

Voir: http://www.php.net/manual/en/math.constants.php

+3

Apparemment, vous pouvez définir la précision de 'pi()'/'M_PI' dans php.ini. Je ne sais pas si cela va à 11^H 100K si. :) http://php.net/manual/fr/function.pi.php – deceze

+1

Dommage, apparemment ça ne va qu'à 48, sur mon système au moins. :) – deceze

+0

grâce à Deceze pour travailler sur ce point! – mauris

-4

PHP ne peut pas tenir un nombre aussi longtemps pour autant que je sache, mais 22/7 est une ancienne voie de calculer PI, bien que ce ne sera pas mieux que la constante PI inclus dans PHP . Peut-être que vous essayez de sortir une longue chaîne de PI comme exercice.

+3

22/7 est à peine exact; la constante PHP native est au moins précise à la précision possible sur un système donné. – Dan

3

J'ai trouvé la source du lien rompu @Konamiman.

Comparé aux résultats à: http://www.angio.net/pi/digits/50.txt et ils sont identiques.

// 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

Vous pouvez calculer Pi par la série Chudnosky. Si vous avez un serveur avec un bélier très élevé, vous pouvez facilement calculer Pi à plusieurs décimales. Si vous voulez l'amener à un certain nombre de décimales alors, augmentez les efforts à un très grand nombre et utilisez substr pour le raccourcir à la décimale requise. Si vous pensez que ce processus est très lent, alors vous pouvez obtenir la valeur pi en le recherchant sur google.

+0

C'est une façon très lente de le faire car la série converge lentement. –

+1

@Salixalba Pouvez-vous voir, j'ai écrit là '... un serveur avec un RAM très élevé ...'. –

+0

De http://en.wikipedia.org/wiki/Leibniz_formula_for_%CF%80 Calculer π à 10 décimales correctes en utilisant la sommation directe de la série nécessite environ 5.000.000.000 de termes. Lancer plus de RAM sur le problème n'aidera pas beaucoup à essayer une formule différente comme celles de http://en.wikipedia.org/wiki/Approximations_of_%CF%80 –

Questions connexes