PHP模数运算符为双精度数

时间:2013-01-15 02:40:55

标签: php double modulo

我读了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如何工作的定义?

1 个答案:

答案 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.