我读了here:
具有非整数的模数将产生不可预测的结果。
但是,我尝试to play a bit with it,它似乎给出了非常可预测的结果:
function mod($a, $b) {
echo "$a % $b = " . ($a % $b) . '<br>';
}
mod(10.3, 4);
mod(10.3, 2);
mod(-5.1, 3);
// OUTPUT:
// 10.3 % 4 = 2
// 10.3 % 2 = 0
// -5.1 % 3 = -2
换句话说,double
似乎首先转换为integer
。
当第一个操作数为%
时,是否有double
如何工作的定义?
答案 0 :(得分:5)
使用:
fmod(10.3, 4)
我也必须做同样的事情,但我注意到双打被转换为int并且使用fmod返回一个double。
如果这有帮助
来自http://php.net/manual/en/language.operators.arithmetic.php
The result of the modulus operator % has the same sign as the dividend — that is, the result of $a % $b will have the same sign as $a.