Rounding to nearest fraction (half, quarter, etc.)
ceil, floor, php, printf, rounding
Solution
Since you're looking for fourths (`.00`, `.25`, `.50`, `.75`), multiply your number by 4, round to nearest whole number as desired (`floor` if down, `ceil` if up), then divide by 4.
1.32, down to nearest fourth:
1.32 * 4 = 5.28 floor(5.28) = 5.00 5.00 / 4 = 1.25
Same principle applies for any other fractions, such as thirds or eighths (`.0`, `.125`, `.25`, `.375`, `.5`, `.625`, `.75`, `.875`). For example:
1.77, up to nearest eighth:
1.77 * 8 = 14.16 ceil(14.16) = 15.00 15.00 / 8 = 1.875
Just for fun, you could write a function like this:
function floorToFraction($number, $denominator = 1)
{
$x = $number * $denominator;
$x = floor($x);
$x = $x / $denominator;
return $x;
}
echo floorToFraction(1.82); // 1
echo floorToFraction(1.82, 2); // 1.5
echo floorToFraction(1.82, 3); // 1.6666666666667
echo floorToFraction(1.82, 4); // 1.75
echo floorToFraction(1.82, 9); // 1.7777777777778
echo floorToFraction(1.82, 25); // 1.8
Problem
So, I need to create the following functions but my head can't think of any possibility in PHP without complicated math. - Round always up to the nearest decimal (1.81 = 1.90, 1.89 = 1.90, 1.85 = 1.90) - Round always down to the nearest decimal (1.81 = 1.80, 1.89 = 1.80, 1.85 = 1.80) - Round always up to the nearest x.25 / x.50 / x.75 / x.00 (1.81 = 2, 1.32 = 1.50) - Round always down to the nearest x.25 / x.50 / x.75 / x.00 (1.81 = 1.75, 1.32 = 1.25) - Round always up to the nearest x.50 / 1 (1.23 = 1.50, 1.83 = 2) - Round always down to the nearest x.50 / 1 (1.23 = 1, 1.83 = 1.50) I have searched on Google for 2 hours now and the only things that came up were Excel forums. Is it possible with some simple lines of PHP?