Я использую оператор modulo, как показано ниже, но при запуске он сообщает об ошибке Division by zero
с присваиванием $new
. Как я могу это исправить?Modulo приводит к ошибке «Division by zero»
$per = 0.2;
$a = 20;
$new = $a % $per;
Я использую оператор modulo, как показано ниже, но при запуске он сообщает об ошибке Division by zero
с присваиванием $new
. Как я могу это исправить?Modulo приводит к ошибке «Division by zero»
$per = 0.2;
$a = 20;
$new = $a % $per;
В вашем примере $per
является числом с плавающей запятой (0.2). Оператор принимает только по модулю два целочисленных операндов, согласно PHP manual:
Операндов по модулю преобразуется в целые числа (путем удаления десятичной части) перед обработкой. Для модуля с плавающей запятой см.
fmod()
.
Поскольку оператор принимает только целочисленные операнды, $per
со значением 0.2 преобразуется в 0, что дает ошибку. Как предлагается в руководстве, вы можете использовать fmod
в качестве альтернативы:
$new = fmod($a, $per);