【问题标题】:Wrong modulus result on PHP but right result on PythonPHP 上的模数结果错误,但 Python 上的结果正确
【发布时间】:2020-03-30 02:11:20
【问题描述】:

我在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 时,答案是正确的。

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

【问题讨论】:

    标签: php python math modulus fmod


    【解决方案1】:

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

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

    输出

    285
    

    Demo on 3v4l.org

    【讨论】:

    • @KhoerulUmam 不用担心 - 我很高兴能提供帮助。
    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多