参考链接:https://blog.csdn.net/nishiwodebocai21/article/details/97012993
取余和取模在除数和被除数都是正数的情况下是没有区别的,但是如果出现负号的时候,结果就不一样了
System.out.println (-4 % 3); //-1
System.out.println (4 % 3); //1
System.out.println (4 % -3); //1
System.out.println (Math.floorMod (-4, 3)); //2
System.out.println (Math.floorMod (4, 3)); //1
System.out.println (Math.floorMod (4, -3)); //-2
在matlab中,关于取余和取模是这么定义的:
当y≠0时:
取余:rem(x,y)=x-y.*fix(x./y)
取模:mod(x,y)=x-y.*floor(x./y)
其中,fix()函数是向0取整,floor()函数是向负无穷取整
例如: 4 / (-3) 约等于-1.3
在取余运算时候商值向0方向舍弃小数位于是fix(-1.3) = -1
取余结果 : 4 - (-3)(-1) = 1
在取模运算时商值向负无穷方向舍弃小数位于是 floor(-1.3) = -2
取模结果 : 4 - (-3)(-2) = -2
image.png
网友评论