PHP 8.4.0 RC4 available for testing

intdiv

(PHP 7, PHP 8)

intdivДелит два числа без остатка

Описание

intdiv(int $num1, int $num2): int

Функция возвращает целочисленное частное деления числа num1 на число num2.

Список параметров

num1

Делимое — число, которое требуется разделить.

num2

Делитель — число, на которое делится число num1.

Возвращаемые значения

Функция возвращает целое частное от деления числа num1 на число num2.

Ошибки

Если число num2 равно 0, функция выбросит исключение DivisionByZeroError. Если число num1 равно значению константы PHP_INT_MIN, а число num2 равно -1, функция выбросит исключение ArithmeticError.

Примеры

Пример #1 Пример использования функции intdiv()

<?php

var_dump
(intdiv(3, 2));
var_dump(intdiv(-3, 2));
var_dump(intdiv(3, -2));
var_dump(intdiv(-3, -2));
var_dump(intdiv(PHP_INT_MAX, PHP_INT_MAX));
var_dump(intdiv(PHP_INT_MIN, PHP_INT_MIN));
var_dump(intdiv(PHP_INT_MIN, -1));
var_dump(intdiv(1, 0));

?>
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

Смотрите также

  • / — Деление чисел с плавающей точкой
  • % — Целочисленный модуль
  • fmod() - Возвращает дробный остаток от деления по модулю — Остаток в виде числа с плавающей точкой от деления по модулю

Добавить

Примечания пользователей 3 notes

up
43
AmeenRoss
9 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
6
oittaa
2 years ago
Python style integer division, where the result is always rounded towards minus infinity.

1 // 2 is 0
(-1) // 2 is -1
1 // (-2) is -1
(-1) // (-2) is 0

<?php
function intdiv_py(int $num1, int $num2): int{
if (
$num1 < 0 xor $num2 < 0){
$num1 = abs($num1);
$num2 = abs($num2);
$remainder = $num1 % $num2;
return
$remainder ? -1 -($num1 - $remainder) / $num2 : -$num1 / $num2;
}
return
intdiv($num1, $num2);
}

var_dump(intdiv_py(1, 2)); // 0
var_dump(intdiv_py(-1, 2)); // -1
var_dump(intdiv_py(1, -2)); // -1
var_dump(intdiv_py(-1, -2)); // 0
?>
up
-2
sree dot millu at gmail dot com
5 years 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
To Top