除以零 - php模数与数字小于1

时间:2014-08-20 15:33:23

标签: php

当我想使用模数运算符并且第二个数小于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

感谢

1 个答案:

答案 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)