2009-11-24 89 views
5

¿Cómo puedo calcular el valor de pi en PHP hasta X números decimales?¿Cómo se puede calcular pi con un número determinado de dígitos en PHP?

4 puntos decimales

3,141

64 puntos decimales

3,141592653589793238462643383279502884197169399375105820974944592

+0

el problema principal es calcular el valor de pi hasta 100000 números decimales ... – d3vdpro

+0

Nit picky, pero el '3' no está en una posición decimal (una posición de un dígito después del punto decimal,' .'), entonces esos números solo tiene 3 y 63 dígitos decimales, respectivamente. – ajp15243

Respuesta

0

Cálculo de PI en php?

¿Por qué calcular cuando ya tenemos el M_PI constante?

M_PI contiene el valor 3.14159265358979323846.

10000 lugares decimales para PI es un buen número.

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

+3

Aparentemente puede establecer la precisión de 'pi()'/'M_PI' en php.ini. No estoy seguro si va a 11^H 100K sin embargo. :) http://php.net/manual/en/function.pi.php – deceze

+1

Lástima, aparentemente solo va a 48, en mi sistema al menos. :) – deceze

+0

gracias a deceze por eso! – mauris

-4

PHP no puede contener un número que siempre que yo sepa, pero 22/7 es una antigua forma de calcular PI, aunque eso no va a ser mejor que la constante PI incluido en PHP . Tal vez está tratando de producir una cadena larga de PI como ejercicio.

+3

22/7 es apenas exacto; la constante PHP nativa es al menos precisa para la precisión posible en un sistema dado. – Dan

3

Encontrado el origen del enlace roto @Konamiman publicado.

Comparado los resultados a: http://www.angio.net/pi/digits/50.txt y son lo mismo.

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

Puede calcular Pi por la serie Chudnosky. Si tiene un servidor con un ariete muy alto, puede calcular fácilmente Pi con muchos decimales. Si desea obtener un lugar decimal específico, aumente los esfuerzos a un número realmente grande y use substr para acortarlo a su lugar decimal requerido. Si crees que este proceso es muy lento, puedes obtener el valor pi buscándolo en google.

+0

Esta es una forma muy lenta de hacerlo ya que la serie converge lentamente. –

+1

@Salixalba ¿Puedes ver, he escrito allí '... un servidor con un ram muy alto ...'. –

+0

De http://en.wikipedia.org/wiki/Leibniz_formula_for_%CF%80 Calcular π a 10 lugares decimales correctos utilizando la suma directa de la serie requiere aproximadamente 5,000,000,000 de términos. Lanzar más ram en el problema no ayudará mucho mejor probar una fórmula diferente como las de http://en.wikipedia.org/wiki/Approximations_of_%CF%80 –

Cuestiones relacionadas