Просто сталкивался с этой проблемой, не могли бы вы объяснить, как в итоге получился ответ 4?
Так просто пока я понятия не имею, как это случилось.
echo $a = 20%-8; //4
Ответ:
echo (5 % 3)."\n"; // prints 2
echo (5 % -3)."\n"; // prints 2
echo (-5 % 3)."\n"; // prints -2
echo (-5 % -3)."\n"; // prints -2
Вы пытаетесь получить по модулю отрицательное число. Там нет разницы между этим и: 20%8
Увидеть: https://math.stackexchange.com/questions/519845/modulo-of-a-negative-number
Оператор% оставит напоминание об операции. То есть $x % $y
приведет к остатку $x
деленное на $y
,
Здесь, когда 20 делится на -8, это оставит напоминание 4, которое является ответом.
@bwaaaaaa,Модуль оператора выдаст напоминание об операции.
Suppose $x % $y, that means that Remainder of $x divided by $y.
Так что для вашего примера, когда 20, деленное на -8, даст вам напоминание 4, поэтому его вывод равен 4.
Для получения дополнительной информации. относительно оператора модуля, пожалуйста, посетите этот
Оператор остаток возвращает остаток, оставшийся, когда один операнд делится на второй операнд. помните, что результат оператора по модулю всегда будет принимать знак дивиденда, а не делителя. Он использует встроенную функцию по модулю для получения результата, который является целочисленным остатком от деления var1 на var2.
Итак, здесь в вашем коде var1 равен 20, что является положительным целым числом, а var2 равно -8, что является отрицательным целым числом. 20 — дивиденд, а -8 — делитель.
Итак, как мы знаем, результат оператора модуля будет принимать знак делимого, а не делитель. Поэтому ответ напоминания будет всего 4.
Надеюсь, так теперь понятно. благодарю вас