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

4

1 回答 1

5

利用:

fmod(10.3, 4)

我也必须做同样的事情,但我注意到双精度数被转换为 int 并且使用 fmod 返回一个双精度数。

如果这有帮助

来自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.

于 2013-01-15T02:43:18.567 回答