Математический правильный ответ :
$remainder = $dividend % $divisor;
$quotient = ($dividend - $remainder) / $divisor;
, а остаток проверяет условие 0 <= $remainder < abs($divisor)
.
К сожалению, многие языки программирования (включая PHP) неправильно обрабатывают отрицательные числа с математической точки зрения. Они используют различные правила для вычисления значения и знака остатка.
Если вам нужно работать с отрицательными числами и получать математически правильные результаты, тогда вы можете использовать следующие формулы:
$remainder = (($dividend % $divider) + abs($divider)) % abs($divider);
$quotient = ($dividend - $remainder) / $divider;
Они полагаются на то, как PHP вычисляет модуль с отрицательными операндами, и они могут не дать правильный результат, если они перенесены на другой язык.
Вот скрипт , который реализует эти формулы и сверяет результаты со значениями, приведенными в качестве примера в вышеупомянутом математическом правильном ответе.