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

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 的结果都是相同的。