2011-09-06 20 views
11

Mam liczby dziesiętne przechowywane w bazie danych i trzeba obliczyć procentowy wzrost (lub zmniejszenie) między dwie liczby przy użyciu PHP.Oblicz wzrost procentowy między dwoma liczbami dziesiętnymi

Przykładem dwóch liczb to: 111,0516 111,9052 i który byłby wzrost 0.7628%

znalazłem następujący kod gdzieś. Niestety nie wydaje się do pracy z liczbami po przecinku i zaokrągla je:

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

Idealnie muszę obliczyć procentową dokładnością do dwóch miejsc po przecinku udzielenia odpowiedzi 0,77%.

Czy to możliwe z PHP? Jestem zdumiony. Ani moje umiejętności PHP, ani matematyki nie są wystarczająco dobre, aby to zrozumieć.

Odpowiedz

8

Wystarczy napisać

$count = number_format($count2, 2); 

zamiast

$count = number_format($count2, 0); 

Utrzymując resztę kodu samo.

+0

Jestem takim głupkiem. Ta strona uratowała mnie już kilka razy. Dzięki AndreyKo – Turnip

22

Zrobimy trochę matematyki.

Jeśli masz 4 euro i daję OU 2 euro, masz 6 euro, wzrost jest 2/6.

Jeśli masz x euro i dam ci delta euro, trzeba x + delta = y euro

Możemy napisać

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

Więc funkcja staje:

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

Codepad example

+0

Jeśli jest idealny, dlaczego nie oznaczysz go jako poprawną odpowiedź? Pomogłoby nam, aby nie powtórzyć twojego pytania, by zaznaczyć to, co jest: idealne! – Laci

+0

Co to oznacza '1 -' (1 - $ num_amount/$ num_total)? Czy możesz dać mi oryginalną formułę? –

Powiązane problemy