000697 Java中取余(%)和取模(Math.floorMod)的区别

Math.floorMod(+4, -3) == -2;    (+4 % -3) == +1
Math.floorMod(-4, +3) == +2;    (-4 % +3) == -1
Math.floorMod(-4, -3) == -1;    (-4 % -3) == -1
Math.floorMod(+4, +3) == +1;    (+4 % +3) == +1; 

取模 Math.floorMod(a , b);

取余 a % b;

 

在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


总结
1、取余和取模在除数和被除数同为正数或者同为负数时没有区别;
2、取余的结果和被除数同号,取余运算结果向0方向舍弃小数位;
3、取模的结果和除数同号,取模运算结果向负无穷方向舍弃小数位(尽可能让商更小)

口诀   百分取余被除0,  mod取模除负舍

posted @ 2020-02-18 00:27  站在菠萝的肩膀上  阅读(430)  评论(0)    收藏  举报