对于整数a,b来说,取模运算或者求余运算的方法要分如下两步:
1.求整数商:c=a/b
2.计算模或者余数:r=a-(c*b)
求模运算和求余运算在第一步不同 取
余运算在计算商值向0方向舍弃小数位
取模运算在计算商值向负无穷方向舍弃小数位 例如:
4/(-3)约等于-1.3 在取余运算时候商值向0方向舍弃小数位为-1
在取模运算时商值向负无穷方向舍弃小数位为-2
所以
4rem(-3)=1 4mod(-3)=-2
取余,遵循尽可能让商向0靠近的原则 取模,遵循尽可能让商向负无穷靠近的原则 符号相同时,两者不会冲突。
比如,7/3=2.3,
产生了两个商2 和3 7=3*2+1或7=3*3+(-2)。
因此,7rem3=1,7mod3=1。
符号不同时,两者会产生冲突。
比如,7/(-3)=-2.3,
产生了两个商-2和-3 7=(-3)*(-2)+1或7=(-3)*(-3)+(-2)。
因此,7rem(-3)=1,7mod(-3)=(-2)
通常,取模运算也叫取余运算,
它们返回结果都是余数.rem(取余)和mod(取模)唯一的区别在于:
当x和y的正负号一样的时候,两个函数结果是等同的;
当x和y的符号不同时,rem函数结果的符号和x的一样,而mod和y一样。