源自这个问题:(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.
计算n个模d.结果总是非负的,d的符号被忽略.
例:
echo gmp_strval(gmp_mod('-13', '64')); // 51
Run Code Online (Sandbox Code Playgroud)
请注意,n
并d
必须GMP数量的资源或数字串.其他任何东西都行不通¹
echo gmp_strval(gmp_mod(-13, 64));
echo gmp_mod(-13, 64);
Run Code Online (Sandbox Code Playgroud)
将返回-51(这是一个错误).
¹ 在此键盘中运行上述操作,将在所有三种情况下产生51.它不会在我的开发机器上那样做.