Подтвердить что ты не робот

Как делить числа без остатка в PHP?

Как разделить числа, но исключить остаток в PHP?

4b9b3361

Ответ 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;