Java 模未显示正确值

Java 模未显示正确值,java,modulo,Java,Modulo,-46模7是3,但我得到-4。为什么? int sa=-46; int p=7; System.out.println(sa);//-46 sa=sa%p; System.out.println(sa);//-4 编辑: 我就是这样解决的 (sa)%p+p)%p Java定义%(余数运算符) Java编程语言提供了执行以下操作的运算符 加法、减法、乘法和除法。这是一个好消息 你可能会在basic中被他们的对手认出 数学。唯一对您来说可能是新的符号是“%”,它是 将一个操作数除以另一个操作数,并

-46模7是3,但我得到-4。为什么?

int sa=-46;
int p=7;
System.out.println(sa);//-46
sa=sa%p;
System.out.println(sa);//-4
编辑:

我就是这样解决的

(sa)%p+p)%p

Java定义%(余数运算符)

Java编程语言提供了执行以下操作的运算符 加法、减法、乘法和除法。这是一个好消息 你可能会在basic中被他们的对手认出 数学。唯一对您来说可能是新的符号是“%”,它是 将一个操作数除以另一个操作数,并返回余数作为其整数 结果

(见参考资料来源)


如果您想要创建一个模函数,当您请求模n时,它只返回[0,n]范围内的数字,那么您必须编写它(简单)。

-46 mod 7实际上是-4的可能副本