Java 中的 Mod 产生负数

2022-08-31 06:47:53

当我计算时,我得到了Java。在Python中,我得到的结果是.我必须做些什么才能在Java中使用模函数获得相同的行为?int i = -1 % 2-11-1 % 2


答案 1

这里的问题是,在Python中,%运算符返回模量,而在Java中,它返回余数。这些函数为正参数提供相同的值,但模始终返回负输入的正结果,而其余函数可能给出负结果。在这个问题中有更多关于它的信息。

您可以通过执行以下操作找到正值:

int i = (((-1 % 2) + 2) % 2)

或者这个:

int i = -1 % 2;
if (i<0) i += 2;

(显然-1或2可以是您想要的分子或分母)


答案 2

从Java 8开始,您可以使用Math.floorMod()方法:

Math.floorMod(-1, 2); //== 1

注意:如果模值(此处)为负,则所有输出值也将为负。:)2

资料来源:https://stackoverflow.com/a/25830153/2311557