(PHP 4, PHP 5, PHP 7, PHP 8)
ceil —Round fractions up
Returns the next highest integer value by rounding upnum
if necessary.
num
The value to round
num
rounded up to the next highest integer. The return value ofceil() is still of typefloat as the value range offloat is usually bigger than that ofint.
Version | Description |
---|---|
8.0.0 | num no longer accepts internal objects which support numeric conversion. |
Example #1ceil() example
<?php
echoceil(4.3);// 5
echoceil(9.999);// 10
echoceil(-3.14);// -3
?>
I needed this and couldn't find it so I thought someone else wouldn't have to look through a bunch of Google results-
<?php
// duplicates m$ excel's ceiling function
if( !function_exists('ceiling') )
{
functionceiling($number,$significance=1)
{
return (is_numeric($number) &&is_numeric($significance) ) ? (ceil($number/$significance)*$significance) :false;
}
}
echoceiling(0,1000);// 0
echoceiling(1,1);// 1000
echoceiling(1001,1000);// 2000
echoceiling(1.27,0.05);// 1.30
?>
Caution!
<?php
$value=77.4;
echoceil($value*100) /100;// 77.41 - WRONG!
echoceil(round($value*100)) /100;// 77.4 - OK!
I couldn't find any functions to do what ceiling does while still leaving I specified number of decimal places, so I wrote a couple functions myself. round_up is like ceil but allows you to specify a number of decimal places. round_out does the same, but rounds away from zero.
<?php
// round_up:
// rounds up a float to a specified number of decimal places
// (basically acts like ceil() but allows for decimal places)
functionround_up($value,$places=0) {
if ($places<0) {$places=0; }
$mult=pow(10,$places);
returnceil($value*$mult) /$mult;
}
// round_out:
// rounds a float away from zero to a specified number of decimal places
functionround_out($value,$places=0) {
if ($places<0) {$places=0; }
$mult=pow(10,$places);
return ($value>=0?ceil($value*$mult):floor($value*$mult)) /$mult;
}
echoround_up(56.77001,2);// displays 56.78
echoround_up(-0.453001,4);// displays -0.453
echoround_out(56.77001,2);// displays 56.78
echoround_out(-0.453001,4);// displays -0.4531
?>
Actual behaviour:
echo ceil(-0.1); //result "-0" but i expect "0"
Workaround:
echo ceil(-0.1)+0; //result "0"
Please seehttp://www.php.net/manual/en/language.types.float.php for information regarding floating point precision issues.