2011-09-06 19 views
11

Tengo una cantidad de números decimales almacenados en una base de datos y necesito calcular el porcentaje de incremento (o disminución) entre dos de los números que usan PHP.Calcular porcentaje de aumento entre dos números decimales

Un ejemplo de dos de los números son: 111.0516 y 111.9052 que sería un incremento de 0,7628%

I conocer el código siguiente en alguna parte. Por desgracia, no parece trabajar con números decimales y les redondea:

$num_amount = 111.0516; 
$num_total = 111.9052; 

function percent($num_amount, $num_total) { 
$count1 = $num_amount/$num_total; 
$count2 = $count1 * 100; 
$count = number_format($count2, 0); 
echo $count; 
} 

percent($num_amount, $num_total); 

Lo ideal sería que necesito para calcular el porcentaje con dos decimales dando una respuesta del 0,77%.

¿Es esto posible con PHP? Estoy perplejo. Ni mis habilidades PHP o matemáticas son lo suficientemente buenas como para resolverlo.

Respuesta

8

Sólo tiene que escribir

$count = number_format($count2, 2); 

en lugar de

$count = number_format($count2, 0); 

Mientras se mantiene el resto de su código de la misma.

+0

Soy tan idiota. Este sitio me ha salvado bastantes veces ahora. Gracias AndreyKo – Turnip

22

Vamos a hacer un poco de matemáticas.

Si tiene 4 euros y doy ou 2 euros, tiene 6 euros, el incremento es de 2/6.

Si tiene x euros y te das delta euros, tiene x + delta = y euros

podemos escribir

percentage_increase := (delta/y) * 100 
        := ((y - x)/y) * 100 
        := (1 - (x/y)) * 100 

Por lo que su función se convierte en:

function percent($num_amount, $num_total) { 
    echo number_format((1 - $num_amount/$num_total) * 100, 2); // yields 0.76 
} 

Codepad example

+0

Si es perfecto, ¿por qué no lo marcan como respuesta correcta? Nos ayudaría que no podamos repetir su pregunta para marcarla perfecta como lo que es: ¡perfecta! – Laci

+0

¿Qué significa esto '1 -' (1 - $ num_amount/$ num_total)? ¿Podría darme la fórmula original para eso? –

Cuestiones relacionadas