Java如何用负数进行模数计算?
2022-08-31 10:27:06
我是否做错了模量?因为在Java中计算为,但我想得到.-13 % 64
-13
51
我是否做错了模量?因为在Java中计算为,但我想得到.-13 % 64
-13
51
负数模的两个定义都在使用中 - 一些语言使用一个定义,而另一些语言使用另一个定义。
如果你想得到负输入的负数,那么你可以使用这个:
int r = x % n;
if (r > 0 && x < 0)
{
r -= n;
}
同样,如果您使用的语言在负输入上返回负数,并且您更喜欢正数:
int r = x % n;
if (r < 0)
{
r += n;
}
由于“数学上”两者都是正确的:
-13 % 64 = -13 (on modulus 64)
-13 % 64 = 51 (on modulus 64)
其中一个选项必须由Java语言开发人员选择,他们选择了:
结果的符号等于股息的符号。
在Java规范中说:
https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.17.3