PHP 8.6.0 Beta 1 is available for testing

intdiv

(PHP 7, PHP 8)

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

Описание

function 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));
?>

Результат выполнения приведённого примера:

int(1)
int(-1)
int(-1)
int(1)
int(1)
int(1)

Пример #2 Пример работы функции intdiv() с недопустимым делителем

<?php
try {
 intdiv(PHP_INT_MIN, -1);
} catch (Error $e) {
 echo get_class($e), ': ', $e->getMessage(), PHP_EOL;
}
try {
 intdiv(1, 0);
} catch (Error $e) {
 echo get_class($e), ': ', $e->getMessage(), PHP_EOL;
}
?>

Результат выполнения приведённого примера:

ArithmeticError: Division of PHP_INT_MIN by -1 is not an integer
DivisionByZeroError: Division by zero

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

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

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

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

up
41
AmeenRoss
11 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
5
oittaa
4 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
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /