PHP中-13%64 = -13怎么样?

ajr*_*eal 11 php math modulus

源自这个问题:(Java)java如何使用负数进行模数计算?

在哪里强制PHP返回正51?

更新
寻找要修复的配置设置,而不是硬猜测

还是像bcmath这样的其他数学函数?

更新
并不完全相信java答案,因为它没有考虑负模数 -13+(-64) =?

Spi*_*man 12

无论如何,你引用的帖子已经给出了正确答案:

$r = $x % $n;
if ($r < 0)
{
    $r += abs($n);
}
Run Code Online (Sandbox Code Playgroud)

其中$ x = -13和$ n = 64.

  • while不是必需的,但是将n的绝对值加到r而不是n也可以解决n为负的情况. (2认同)

Gor*_*don 7

如果GMP可用,您可以使用gmp_mod

计算n个模d.结果总是非负的,d的符号被忽略.

例:

echo gmp_strval(gmp_mod('-13', '64')); // 51
Run Code Online (Sandbox Code Playgroud)

请注意,nd必须GMP数量的资源或数字串.其他任何东西都行不通¹

echo gmp_strval(gmp_mod(-13, 64));
echo gmp_mod(-13, 64);
Run Code Online (Sandbox Code Playgroud)

将返回-51(这是一个错误).

¹ 在此键盘中运行上述操作,将在所有三种情况下产生51.它不会在我的开发机器上那样做.