1.取模运算和取余运算的区别
两者计算方法一样,都是用同一个公式
余数(模)=被除数-商×除数
但是在确定商的值时,两者出现了区别
取模运算(Mod)时,商向负无穷方向舍入;而取余运算则向0舍入
所以当被除数和除数符号相同时,两者结果一样
当被除数和除数符号不同时,此时商为负数,取余运算会取靠近0的那个;而取模运算则会取靠近负无穷方向的那个。
举例来说:
取余运算
9÷5=1……4
商可以选1或2(对应余数为4或-1),由于1更靠近0,所以商取1,则余数为4
-9÷-5=1……-4
商可以选1或2(对应余数为-4或1),由于1更靠近0,所以商取1,则余数为-4
-9÷5=-1……-4
商可以选-1或-2(对应余数为-4或1),由于-1更靠近0,所以商取-1,则余数为-4
9÷(-5)=-1……4
商可以选-1或-2(对应余数为4或-1),由于-1更靠近0,所以商取-1,则余数为4
取模运算
9÷5=1……4
商可以选1或2(对应模为4或-1),由于1更靠近负无穷,所以商取1,则模为4
-9÷-5=1……-4
商可以选1或2(对应模为-4或1),由于1更靠近负无穷,所以商取1,则模为-4
-9÷5=-2……1
商可以选-1或-2(对应模为-4或1),由于-2更靠近负无穷,所以商取-2,则模为1
9÷(-5)=-2……-1
商可以选-1或-2(对应模为4或-1),由于-2更靠近负无穷,所以商取-2,则模为-1
另外,在不同环境下,%表示的含义不同,
在c/c++、java中为取余,在python中为取模