PHP浮点数取模运算符

3

我在这里读到:

使用非整数数字进行模运算将会得到不可预测的结果。

然而,我试着尝试一下,它似乎给出了相当可预测的结果:

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 时,% 如何工作有任何定义吗?

也许应该写成“可能会产生意外的结果”。 - Waleed Khan
请您能否提供一个这样意外结果的例子? - Misha Moroshko
1个回答

5
使用:
fmod(10.3, 4)

我也需要做同样的事情,但我注意到双精度数会被转换为整数,并且使用fmod返回一个双精度数。
如果这有帮助的话
来自http://php.net/manual/en/language.operators.arithmetic.php 取模运算符%的结果与被除数具有相同的符号 - 也就是说,$a % $b的结果将具有与$a相同的符号。

1
谢谢你的回答。请注意,我对“double”余数(即“fmod”返回的内容)不感兴趣,而是想了解当第一个操作数为“double”时“%”的工作原理。 - Misha Moroshko
@MishaMoroshko,如果我的回答对你有所帮助,我已经进行了编辑。 - Class
谢谢您的尝试,但不幸的是,您的答案并没有真正回答问题。 - Misha Moroshko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接