15

モジュラス演算子は剰余を表示することになっています。echo(34%100)出力のように34。しかし、なぜDivision by zeroこのコードで " " エラーが発生するのですか?echo(34%4294967296)

4

4 に答える 4

7

「モジュラス使用時のゼロ除算エラー」を検索してこの質問を見つけましたが、その理由は異なりました。

分母が 1 より小さい場合、モジュラス (%演算子) は機能しません。fmod()を使用すると、問題が解決します。

例:

$num = 5.1;
$den = .25;

echo ($num % $den);
// Outputs Warning: Division by zero
echo fmod($num, $den);
// Outputs 0.1

$num = 5.1;
$den = 1;

echo ($num % $den);
// Outputs 0, which is incorrect
echo fmod($num, $den);
// Outputs 0.1, which is correct
于 2014-08-31T19:16:27.727 に答える
2

php で大きな整数を使用すると mod がおかしくなるという報告がたくさんあります。計算のオーバーフロー、またはバグを引き起こす数値自体のオーバーフローである可能性があります。そのためには、多数のライブラリを使用するのが最善です。gmp または bcmath をチェックしてください。

于 2013-08-06T00:26:16.813 に答える