首先,我们先看一些正数的除法

res1 = 6 / 4  #6除以4  
 print(res1) #输出:1.5  
 ​  
 res2 = 6 // 4 #6除以4取商  
 print(res2) #输出:1  
 ​  
 res3 = 6 % 4  #6除以4取余数  
 print(res3) #输出:2  
   
 #以上是小学的数学知识  

再来看下负数的除法

res4 = -6 / 4  
print(res4) #输出:-1.5  
res5 = 6 / -4  
print(res5) #输出:-1.5  
res6 = -6 / -4  
print(res6) #输出:1.5  
​  
#以上应该是初中的数学知识  
#负数的除法这个大家都能看懂,被除数和除数有负数,结果就为负;负负为正.  

下面引入地板除(也就是商)和余数

#注意:在Python当中的地板除是向下取整的  
​  
res7 = -6 // 4  
print(res7) #输出:-2  
#-6除以4结果为-1.5(res4输出可以得出),向下取整,也就为-2(-1.5>-2,所以向下取整为-2)  
​  
res8 = 6 // -4  
print(res8) #输出:-2  
#6除以-4结果为-1.5(res5输出可以得出),向下取整,也就为-2(-1.5>-2,所以向下取整为-2)  
​  
res9 = -6 // -4  
print(res9) #输出:1  
#-6除以-4结果为1.5(res6输出可以得出),向下取整,也就是1.  

接下来再看余数的运算

res10 = -6 % 4  
print(res10) #输出:2  
#在res7上我们得到了-6除以4的商为-2,要得到余数=被除数-除数*商  
#也就是:-6-4*(-2)=-6+8=2  
​  
res11 = 6 % -4  
print(res11) #输出:-2  
#同理:6除以-4的商为-2,6-(-2)*(-4)=-2  
​  
res12 = -6 % -4  
print(res12) #输出:-2  
#-6除以-4的商为1,所以-6-(-4)*1=-2  

总结:我们在做求商和取余时候,记住一句话:Python当中的地板除是向下取整的.


在 Python 和 C++ 中,a % b 的计算方式是一样的,都遵循了标准的取模运算规则。对于取模运算,正负操作数的处理方式是一样的,没有很大的区别。

取模运算的定义如下:

  • 对于两个正整数 aba % b 的结果是 a 除以 b 的余数。
  • 对于两个负整数 aba % b 的结果也是 a 除以 b 的余数。
  • 对于一个正整数 a 和一个负整数 ba % b 的结果是 a + |b| 的余数。
  • 对于一个负整数 a 和一个正整数 ba % b 的结果也是 a + |b| 的余数。

其中,|b| 表示 b 的绝对值。这个规则适用于 Python 和 C++ 的取模运算。

因此,无论 ab 的符号如何,a % b 的结果都是相同的。