我在这里读到: 使用非整数数字进行模运算将会得到不可预测的结果。 然而,我试着尝试一下,它似乎给出了相当可预测的结果: 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 时,% 如何工作有任何定义吗?
使用:fmod(10.3, 4) 我也需要做同样的事情,但我注意到双精度数会被转换为整数,并且使用fmod返回一个双精度数。如果这有帮助的话来自http://php.net/manual/en/language.operators.arithmetic.php 取模运算符%的结果与被除数具有相同的符号 - 也就是说,$a % $b的结果将具有与$a相同的符号。