The expression you're trying to format is this:
($row['OK_05'] / $row['TotalMatch']) * 100
So whichever function you decide to use needs to go around that expression.
As to which function to use, you need to select one that returns a string, not a float.
If you use round
, and your expression returns a float that rounds to a number with two zeros after the decimal point, the trailing zeros will not be displayed in the result. For example, echo round(92.0006829268, 2)
will display 92
, not 92.00
. So don't use round
if you need to be sure that two decimal places are always displayed. round
is a math function, not a formatting function.
floor
is really not useful at all here, as it returns a number with no decimal places.
A simple way is to use sprintf
as shown in some of the other answers.
echo sprintf("%.2f", ($row['OK_05'] / $row['TotalMatch']) * 100);
The first argument to sprintf
is "%.2f"
, which is a format string indicating that the second argument should be displayed as a float with two decimal places. The second argument is your expression.
Using bcdiv
as suggested in the other answer will also work, but it works a little differently that sprintf
and will produce a slightly different result in some cases.
sprintf
will round to the number of decimal places specified, so for example
echo sprintf("%.2f", 926.89 / 10); // outputs 92.69
and bcdiv
will truncate instead, so
echo bcdiv(926.89, 10, 2); // outputs 92.68
Whichever one of those works for you, do that.