# PHP Math equation problem

Hi - I'm programming in PHP.  Here is some YTD information:
2011 YTD 14,989.3 2,877,688.8 \$73,101.97
2010 YTD 18,409.8 1,911,203.4 \$52,875.36
YTD Change Down 1.228% Up 1.506% Up 1.383%

The YTD Change % looks incorrect to me.  This is the formula I'm using to calculate the percentage.  I know you mathematical people will be horrified but I never did very well in math. :(  Help!

Thanks - Zack
``````if (\$LMTDYYYAVG100 > \$CMTDYYYAVG100) { \$chMTDAVG100="<font color=red>Down " . number_format((\$LMTDYYYAVG100/\$CMTDYYYAVG100)*1, 3) . "%</font>"; } else { \$chMTDAVG100="<font color=green>Up " . number_format((\$CMTDYYYAVG100/\$LMTDYYYAVG100)*1, 3) . "%</font>"; }
if (\$LMTDYYYJet > \$CMTDYYYJet) { \$chMTDJet="<font color=red>Down " . number_format((\$LMTDYYYJet/\$CMTDYYYJet)*1, 3) . "%</font>"; } else { \$chMTDJet="<font color=green>Up " . number_format((\$CMTDYYYJet/\$LMTDYYYJet)*1, 3) . "%</font>"; }
if (\$LMTDYYYSPI > \$CMTDYYYSPI) { \$chMTDSPI="<font color=red>Down " . number_format((\$LMTDYYYSPI/\$CMTDYYYSPI)*1, 3) . "%</font>"; } else { \$chMTDSPI="<font color=green>Up " . number_format((\$CMTDYYYSPI/\$LMTDYYYSPI)*1, 3) . "%</font>"; }
``````
LVL 4
###### Who is Participating?

x

Commented:
The numbers are actually right, just the interpretation is off.
1.228 means you have currently 1.228 times last year, so that's a 22.8% increase.
If you get .9 then that's a 10% decrease. Take your number, subtract 1 and multiply by 100.
So (ThisYear/LastYear - 1)*100 gives the percentage change.
0

Commented:
For down, the formula is a little reversed. Basically, you just subtract from 1 instead of subtracting 1.
(1 - ThisYear/LastYear)*100
0

Commented:
I'll attempt to fix the code to show what I mean (I'm not the best at PHP so here goes):
``````if (\$LMTDYYYAVG100 > \$CMTDYYYAVG100) { \$chMTDAVG100="<font color=red>Down " . number_format((1 - \$LMTDYYYAVG100/\$CMTDYYYAVG100)*100, 3) . "%</font>"; } else { \$chMTDAVG100="<font color=green>Up " . number_format((\$CMTDYYYAVG100/\$LMTDYYYAVG100 - 1)*100, 3) . "%</font>"; }
if (\$LMTDYYYJet > \$CMTDYYYJet) { \$chMTDJet="<font color=red>Down " . number_format((1 - \$LMTDYYYJet/\$CMTDYYYJet)*100, 3) . "%</font>"; } else { \$chMTDJet="<font color=green>Up " . number_format((\$CMTDYYYJet/\$LMTDYYYJet - 1)*100, 3) . "%</font>"; }
if (\$LMTDYYYSPI > \$CMTDYYYSPI) { \$chMTDSPI="<font color=red>Down " . number_format((1 - \$LMTDYYYSPI/\$CMTDYYYSPI)*100, 3) . "%</font>"; } else { \$chMTDSPI="<font color=green>Up " . number_format((\$CMTDYYYSPI/\$LMTDYYYSPI - 1)*100, 3) . "%</font>"; }
``````
0

Author Commented:
That worked perfectly!!  Thanks!!  Just one question why do you have to -1 (subtract 1) from the back or from the front?  What does it do to the answer?

Apprecaite it!
Thanks!
0

Commented:
The number you generate is the ratio of the new number to the old number. To see the change, you subtract the old number. It's the same as (new - old)/old. With a little algebra, you can see that they are identical.
If you lost 10%, this would actually give you a value of -10% gain. But you want to show the number as positive, so we flip it - (new - old)/old = (-new + old)/old = (old - new)/old = 1 - new/old.
I just short cut the algebra.
0

Author Commented:
Thanks for the explanation! I'm horrific in algebra. :(

Zack
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.