Current Location: Home> Latest Articles> What is the difference between the ceil() and floor() functions in PHP? Which one is better for rounding up?

What is the difference between the ceil() and floor() functions in PHP? Which one is better for rounding up?

M66 2025-06-15

In PHP development, when handling floating-point numbers, it is often necessary to round the values up or down. PHP provides two very useful mathematical functions: ceil() and floor(). While their functions seem similar, they actually have a fundamental difference. This article will explain in detail the differences between these two functions and explore which one is more appropriate for rounding up in specific scenarios.

What is the purpose of the ceil() function?

The ceil() function is used to round up. Regardless of the decimal value, it will always round the number up to the smallest integer greater than or equal to it.

Example code:

<?php
echo ceil(4.3);  // Outputs 5
echo ceil(9.999); // Outputs 10
echo ceil(-3.1);  // Outputs -3
?>

As shown above, ceil(4.3) returns 5, the smallest integer greater than 4.3, while ceil(-3.1) returns -3, as -3 is the smallest integer greater than -3.1.

What is the purpose of the floor() function?

In contrast to ceil(), the floor() function is used to round down. It always returns the largest integer less than or equal to the original number.

Example code:

<?php
echo floor(4.7);  // Outputs 4
echo floor(9.999); // Outputs 9
echo floor(-3.1);  // Outputs -4
?>

Note that when handling negative numbers, the behavior of floor() results in a more negative value. For example, floor(-3.1) outputs -4 instead of -3.

The essential difference between ceil() and floor()

The key differences are summarized as follows:

FunctionRound Up/DownPositive Number BehaviorNegative Number Behavior
ceil()Round UpUp (larger)Up (smaller negative)
floor()Round DownDown (smaller)Down (larger negative)

This distinction becomes particularly important when dealing with negative numbers. For instance, in a user points system, if you want to "round up" when deducting points, you might need to pay special attention to which function you choose.

Which function is better for rounding up?

There is no doubt that if you need to round up, you should use the ceil() function. The purpose of ceil() is to always return the smallest integer greater than the original value when there is a decimal.

For example, in a pagination feature, if you have an API request: https://m66.net/api/get_list.php?total=53&per_page=10, you may need to calculate the total number of pages:

<?php
$total = 53;
$perPage = 10;
$pages = ceil($total / $perPage);
echo $pages; // Outputs 6
?>

If you mistakenly use floor(), the result will be 5 pages, and users will not be able to see the last 3 data entries.

Conclusion

  • ceil(): Rounds up, more suitable for situations where you want to "at least" cover the original value.

  • floor(): Rounds down, suitable for applications where you care only about not exceeding the original value.

Therefore, in situations where rounding up is required, the ceil() function is the more appropriate choice. Understanding the subtle differences between these two functions can help developers work with floating-point numbers more precisely and efficiently.