Skip to content

Rounding numbers

Rounding numbers with the round() function

The round() function is a powerful tool for enabling you to round floating-point numbers to the nearest integer or a specified number of decimal places.

The round() function accepts three parameters: the number you want to round and, optionally, the number of decimal places to round to and the way and the logic to round decimal numbers. If the second parameter is omitted, round() will round to the nearest integer.

$number = 3.76;
$rounded = round($number);

In the example above using round without the second parameter, the decimal number 3.76 is rounded to the nearest integer number so that 4.0.

$number = 3.76;
$rounded = round($number, 1);
// the result is 3.8

In the example above using 1 as the precision number (second parameter), the returned number (the nearest number with 1 precision digit) is 3.8.

What if, the number you want to round is in the middle for example 3.5 and you want to round with 0 digits as precision? In this case, you can use the third parameter of the round() function that allows you to determine the way you want to round the number.

The rounding mode

When using the round() function in PHP, you can specify the rounding mode by providing one of the following constants as the third parameter:

  • PHP_ROUND_HALF_UP: This mode rounds the number away from zero when it’s halfway there. For example, 3.5 becomes 3.0, and -3.5 becomes -4.0.
$number = 3.5;
$rounded = round($number, mode: PHP_ROUND_HALF_UP);
// the result is 4.0
  • PHP_ROUND_HALF_DOWN: In this mode, the number is rounded towards zero when it’s halfway there. So, 1.5 becomes 1.0, and -1.5 becomes -1.0.
$number = 3.5;
$rounded = round($number, mode: PHP_ROUND_HALF_DOWN);
// the result is 3.0
  • PHP_ROUND_HALF_EVEN: Here, the number is rounded towards the nearest even value when it’s halfway there. This means that both 3.5 and 4.5 become 4.0.
$number = 3.5;
$rounded = round($number, mode: PHP_ROUND_HALF_EVEN);
// the result is 4.0
$number = 4.5;
$rounded = round($number, mode: PHP_ROUND_HALF_EVEN);
// the result is 4.0
  • PHP_ROUND_HALF_ODD: In this mode, the number is rounded towards the nearest odd value when it’s halfway there. So, 3.5 becomes 3.0, and 2.5 becomes 3.0.
$number = 3.5;
$rounded = round($number, mode: PHP_ROUND_HALF_ODD);
// the result is 3.0
$number = 4.5;
$rounded = round($number, mode: PHP_ROUND_HALF_ODD);
// the result is 5.0

These modes provide flexibility in how numbers are rounded, allowing you to choose the rounding behavior that best suits your specific needs.

Negative precision

As mentioned, the second parameter of the round() function is precision. When the precision parameter is negative, it defines the number of significant digits before the decimal point to which the number is rounded. For example, with a precision of -1, the number is rounded to the nearest multiple of ten (the tens place). So, 234.56 would become 230. With a precision of -2, it’s rounded to the nearest multiple of one hundred (the hundreds place), making 234.56 become 200.0. Similarly, with a precision of -3, it’s rounded to the nearest thousand (the thousands place), making 234.56 become 0.0.