首页 > 解决方案 > PHP 上的模数结果错误,但 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 时,答案是正确的。

为什么会这样?任何解决方案?

标签: phppythonmathmodulusfmod

解决方案


您溢出了浮点分辨率,因此您需要使用 bcmath 进行所有数学运算,包括求幂:

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

输出

285

3v4l.org 上的演示


推荐阅读