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