Midwest PHP Call For Papers Open

intdiv

(PHP 7)

intdivDivision d'Entier

Description

intdiv ( int $dividend , int $divisor ) : int

Retourne le quotient entier de la divison de dividend par divisor.

Liste de paramètres

dividend

Nombre à diviser.

divisor

Nombre qui divise dividend.

Valeurs de retour

Le quotient entier de la division de dividend par divisor.

Erreurs / Exceptions

Si divisor est 0, une exception DivisionByZeroError sera émise. Si dividend est PHP_INT_MIN et que divisor est -1, dans ce cas là une exception ArithmeticError est émise.

Exemples

Exemple #1 Exemple de intdiv()

<?php
var_dump
(intdiv(32));
var_dump(intdiv(-32));
var_dump(intdiv(3, -2));
var_dump(intdiv(-3, -2));
var_dump(intdiv(PHP_INT_MAXPHP_INT_MAX));
var_dump(intdiv(PHP_INT_MINPHP_INT_MIN));
var_dump(intdiv(PHP_INT_MIN, -1));
var_dump(intdiv(10));
?>
int(1)
int(-1)
int(-1)
int(1)
int(1)
int(1)

Fatal error: Uncaught ArithmeticError: Division of PHP_INT_MIN by -1 is not an integer in %s on line 8
Fatal error: Uncaught DivisionByZeroError: Division by zero in %s on line 9

Voir aussi

  • / - Division de nombre flotant
  • % - Modulo entier
  • fmod() - Modulo de nombre flotant

add a note add a note

User Contributed Notes 6 notes

up
36
AmeenRoss
4 years ago
This does indeed seem to be equal to intdiv:

<?php
function intdiv_1($a, $b){
    return (
$a - $a % $b) / $b;
}
?>

However, this isn't:

<?php
function intdiv_2($a, $b){
    return
floor($a / $b);
}
?>

Consider an example where either of the parameters is negative:
<?php
$param1
= -10;
$param2 = 3;
print_r([
   
'modulus' => intdiv_1($param1, $param2),
   
'floor' => intdiv_2($param1, $param2),
]);

/**
* Array
* (
*     [modulus] => -3
*     [floor] => -4
* )
*/
?>
up
3
sree dot millu at gmail dot com
22 days ago
@AmeenRoss
This does NOT  seem to be equal to intdiv:

<?php
function intdiv_1($a, $b){
    return (
$a - $a % $b) / $b;
}
?>

See this example code
<?php

$x
= 5.6;
$y = 1.4 ;

echo
intdiv($x,$y);
   
    echo
"\n";
   
function
intdiv_1($a, $b){
    return (
$a - $a % $b) / $b;
}   

echo
intdiv_1($x,$y);
?>

//Output
5
4
up
-1
admin at infis dot net dot ru
19 days ago
For earler versions PHP you may use:

function intdiv_1($a, $b) {
    $a = (int) $a;
    $b = (int) $b;
    return ($a - fmod($a, $b)) / $b;
}
up
-13
polettog at gmail dot com
4 years ago
Without intdiv(), the following may be a good way (with $a and $b of type integer and not too big) :
<?php
(int)($a / $b)
?>
because in case of divisible integers, the result will be integer and there is no risk of float appearing round but below their represented value (like the case (0.1+0.7)*10).
$a and $b really needs to be of type integer though.
If they are too big and indivisible, some precision will be lost during the conversion to float and the result may be inaccurate.
up
-20
Ts.Saltan
4 years ago
$a = 57;
$b = 3;

var_dump(
    intdiv($a,$b),
    intdiv_1($a,$b),
    intdiv_2($a,$b)
);

function intdiv_1($a, $b){
    return ($a-$a%$b)/$b;
}

function intdiv_2($a, $b){
    return floor($a/$b);
}
//intdiv($a, $b) == floor($a/$b) == ($a-$a%$b)/$b
up
-24
Bubonic dot pestilence at gmail dot com
3 years ago
<?php

function intdiv_2($a, $b)  {
   
$val = $a / $b;
    return (
$val < 0 ? "ceil" : "floor") ($val);
}

?>

Aren't this?!
To Top