当我想使用模数运算符并且第二个数小于1(但当然大于0)时,有人可以解释为什么我收到错误Division by zero
当我尝试
时$a = 5
$b = 3
var_dump($a % $b);die; // result is as expected int(2)
但是当我尝试这个时
$a = 5
$b = 0.5
var_dump($a % $b);die; // result is
Warning: Division by zero
bool(false)
PHP 5.4.4,debian 7
感谢
答案 0 :(得分:9)
模运算符丢弃它的操作数的小数部分。来自documentation:
在处理之前,模数的操作数被转换为整数(通过去除小数部分)。
可以通过以下方式观察到:
$a = 5;
$b = 3.6;
var_dump($a % $b);die; // int(2)
要避免此行为,请改用fmod
方法:
$a = 5;
$b = 0.5;
var_dump(fmod($a, $b));die; // float(0)