2011-09-06 33 views
11

Ho un numero di numeri decimali memorizzati in un database e ho bisogno di calcolare l'aumento percentuale (o la diminuzione) tra due numeri usando PHP.Calcolare l'aumento percentuale tra due numeri decimali

Un esempio di due dei numeri sono: 111,0516 e 111,9052 che sarebbe un aumento del 0,7628%

ho trovato da qualche parte il seguente codice. Purtroppo non sembra di lavorare con i numeri decimali e arrotonda:

$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); 

Idealmente ho bisogno di calcolare la percentuale a due cifre decimali che danno una risposta di 0,77%.

Ciò è possibile con PHP? Sono perplesso. Né le mie abilità di PHP o di matematica sono sufficienti per capirlo.

risposta

8

Basta scrivere

$count = number_format($count2, 2); 

invece di

$count = number_format($count2, 0); 

Pur mantenendo il resto del codice stesso.

+0

Sono un tale idiota. Questo sito mi ha salvato parecchie volte adesso. Grazie AndreyKo – Turnip

22

Facciamo un po 'di matematica.

Se si dispone di 4 euro e do ou 2 euro, si dispone di 6 euro, l'incremento è 2/6.

Se avete x euro e io ti do delta euro, avete x + delta = y euro

possiamo scrivere

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

Così la vostra funzione diventa:

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

Codepad example

+0

Se è perfetto perché non lo contrassegnate come risposta corretta? Ci aiuterebbe che non può ripetere la tua domanda per contrassegnare perfetto come quello che è: perfetto! – Laci

+0

Cosa significa "1" (1 - $ num_amount/$ num_totale)? Potresti darmi la formula originale per questo? –

Problemi correlati