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)

私も同じことをしなければなりませんでしたが、double が 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.

于 2013-01-15T02:43:18.567 に答える