对整型变量a、b来说,求余运算和取模运算的公式都是:
1.求整数商:n=a/b;
2.计算余数或者模:y=a-n*b。
但是,两种运算在第一步时就产生了不同的结果,因为:求余运算在取n的值时,向0方向舍入;而取模运算在计算n的值时,向负无穷方向舍入。
接下来举例说明:-3%10
第一、在C、JAVA中:
-3%10=-3

解释:如上图代码注释
附加:因为-3除以10等于-0.3,又因为C、JAVA中是向0方向舍入,所以整数商是0

(上图是java的取整为0)
所以在C、JAVA中,-3%10=-3-(0)*10=-3
第二、在Python中:
-3%10=7

解释:如上上图
附加:因为-3除以10等于-0.3,又因为python中是向负无穷方向舍入,所以整数商是-1

(以上图片是python的取整运算,为-1)
所以在python中-3%10=-3-(-1)*10=7
好的,接下来来归纳一下:
1a和b符号相同时,求余和取模结果相同;
2a和b符号不同时,求余结果的符号和a相同,取模结果的符号和b相同。
这里我还贴切说明一下:
1就是说在C、JAVA中,余数符号与被除数符号一致;
2在python中, 余数符号与除数符号一致。
另外不同语言环境下“%”运算符的含义也不同:
1c/c++、Java为求余
2Python为取模
另外一点小补充:
在数学上的取整方式是分为三类的哦:向上取整,向下取整,向零取整
1向上取整:向+∞方向取最接近精确值的整数。
在这种取整方式下,5 / 3 = 2, -5 / -3 = 2, -5 / 3 = -1, 5 / -3 = -1,-3 / 10 =0
2向下取整:向-∞方向取最接近精确值的整数。
在这种取整方式下,5 / 3 = 1, -5 / -3 = 1, -5 / 3 = -2, 5 / -3 = -2, -3 / 10 = -1
3向零取整:向0方向取最接近精确值的整数。
在这种取整方式下,5 / 3 = 1, -5 / -3 = 1, -5 / 3 = -1, 5 / -3 = -1,-3 / 10 =0