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
我在 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