How to Get the Integer Part of a Decimal Number 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

This post was published (and was last revised ) by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.