How to Get the Integer Part of a Decimal Number in PHP?

Find out how to get the digits before a decimal point in PHP

In PHP, you can get the integer part of a decimal number in the following ways:

If you wish to perform division and get the integer value as a result, then you may also use intdiv().

Casting to Integer

You can cast the number to an integer (or use the intval() function) to truncate floating point numbers towards zero, discarding the fractional component of a number and returning only the integer part.

For example, you can use it like this:

var_dump((int) (10 / 3)); // 3
var_dump((int) (-10 / 3)); // -3
var_dump((int) (10 / -3)); // -3

var_dump((int) 3.333); // 3
var_dump((int) -3.333); // -3
var_dump((int) (5 / 2)); // 2
var_dump((int) (-5 / 2)); // -2
var_dump((int) (5 / -2)); // -2

var_dump((int) 2.5); // 2
var_dump((int) -2.5); // -2
var_dump((int) (10 / 1)); // 10
var_dump((int) (-10 / 1)); // -10
var_dump((int) (10 / -1)); // -10

var_dump((int) 10.0); // 10
var_dump((int) -10.0); // -10

Using floor() and ceil()

To achieve the same effect as with casting to integer, you can:

  • Use floor() to round down positive integers, and;
  • Use ceil() to round up negative integers.

Doing so would truncate a floating point number towards zero. You can implement it, for example, like so:

function trunc(int|float $num): int
{
    return ($num > 0) ? floor($num) : ceil($num);
}

You can also implement this using only the floor() function like so:

function trunc(int|float $num): int
{
    $unsignedNum = floor(abs($num));
    return ($num < 0) ? -$unsignedNum : $unsignedNum;
}

Similarly, you can implement this using only the ceil() function like so:

function trunc(int|float $num): int
{
    $unsignedNum = ceil(-abs($num));
    return ($num < 0) ? $unsignedNum : -$unsignedNum;
}

Using any of these would yield the same result (as you can see in the examples below):

var_dump(trunc(10 / 3)); // 3
var_dump(trunc(-10 / 3)); // -3
var_dump(trunc(10 / -3)); // -3

var_dump(trunc(3.333)); // 3
var_dump(trunc(-3.333)); // -3
var_dump(trunc(5 / 2)); // 2
var_dump(trunc(-5 / 2)); // -2
var_dump(trunc(5 / -2)); // -2

var_dump(trunc(2.5)); // 2
var_dump(trunc(-2.5)); // -2
var_dump(trunc(10 / 1)); // 10
var_dump(trunc(-10 / 1)); // -10
var_dump(trunc(10 / -1)); // -10

var_dump(trunc(10.0)); // 10
var_dump(trunc(-10.0)); // -10

Hope you found this post useful. It was published (and was last revised ). Please show your love and support by sharing this post.