PHP 上的模数结果错误,但 Python 上的结果正确

Wrong modulus result on PHP but right result on Python

我在 PHP

上操作这个号码时遇到问题

例如:

72 ** 79 % 3337

当我使用

echo 72 ** 79 % 3337 // Result is int(0)

那我试着拆分成这个

$num = number_format(72 ** 79, 0, '', '');
echo $num % 3337;   // Result is 1069

然后我再次尝试使用 fmod() 和 bcmod()

$num = number_format(72 ** 79, 0, '', '');
echo fmod($num, 3337);        // Result is 2255
echo bcmod($num, 3337);       // Result is 2255

但是,我想要的结果是 285,当使用 Python 时答案是正确的。

为什么会这样?有什么解决办法吗?

你溢出了浮点分辨率,所以你需要用 bcmath 做 所有 数学运算,包括求幂:

$num = bcpow(72, 79);
echo bcmod($num, 3337);

输出

285

Demo on 3v4l.org