Как делить числа, но исключать остаток в PHP?
Просто передайте полученное значение в int.
$n = (int) ($i / $m);
Интересные функции (в зависимости от того, что вы хотите достичь, и если вы ожидаете, что отрицательные целые числа будут разделены) – это floor()
, ceil()
и round()
.
Для большинства практических целей принятый ответ правильный.
Однако для построений, где целые числа имеют ширину 64 бита, не все возможные целочисленные значения представляются как float с двойной точностью; См. Мой комментарий к принятому ответу для получения дополнительной информации.
Вариант
$n = ($i - $i % $m) / $m;
(код, взятый из комментария KingCrunch в другом ответе) позволит избежать этой проблемы в зависимости от желаемого поведения округления (помните, что результат оператора модуля может быть отрицательным).
Помимо решений выше, таких как $result = intval($a / $b)
существует один частный случай:
Если вам требуется целочисленное деление (без остатка) на некоторую степень двух ( $b
равно 2 ^ N
), вы можете использовать побитовое смещение вправо:
$result = $a >> $N;
где $ N – число от 1 до 32 в 32-разрядной операционной системе или 64 для 64-разрядных.
Иногда это полезно, потому что это самое быстрое решение для случая $ b – это сила двух.
И есть обратная (будьте осторожны из-за переполнения!) Операции для умножения на мощность двух:
$result = $a << $N;
Надеюсь, это тоже поможет кому-то.
или вы можете просто сделать intval (13/2) дает 6
используйте modulo в php:
$n = $i % $m;