模运算符应该显示余数。就像echo(34%100)
输出一样34
。但是为什么我会收到Division by zero
此代码的“”错误echo(34%4294967296)
问问题
12793 次
4 回答
19
4294967296
是2^32
并且不能表示为 32 位数字 - 它会返回 0。如果您使用 64 位版本的 PHP,它可能会工作。
您也许可以使用浮点模数fmod来获得您想要的东西而不会溢出。
于 2013-08-06T00:13:40.253 回答
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 回答
7
https://bugs.php.net/bug.php?id=51731
2^31 is the largest integer you can get on Windows.
如果您仍想修改大数,请使用bcmod。
于 2013-08-06T00:14:30.063 回答
2
有很多关于 mod 在 php 中使用大整数的报告。可能是计算中的溢出,甚至可能是那个数字本身会给你带来错误。最好为此使用大量库。查看 gmp 或 bcmath。
于 2013-08-06T00:26:16.813 回答