为什么15.5 mod 5 = 0?

duk*_*vin 5 php modulus

我理解15 mod 5 = 0因为没有来自师的余数.

但为什么15.5 mod 5 == 0呢?还没有.5剩下的?

$time = "15.5";
$interval = 5.0;
if($time % $interval == 0)
    echo "it's time!";
else
    echo "not time";

//Outputs: it's time!
Run Code Online (Sandbox Code Playgroud)

Ell*_*lle 16

PHP文档:

在处理之前,模数的操作数被转换为整数(通过去除小数部分).

使用fmod,如果你想保留小数余.(感谢这个链接,Oli Charlesworth,并不知道存在这样的功能.)

  • @KevinDuke:这并不是那么糟糕.请改用[`fmod`](http://www.php.net/manual/en/function.fmod.php). (7认同)