Franky's Blog

书山有路勤为径,学海无涯苦作舟……

Python-除法的更多考虑

Python对于除法的更多考虑。

在Python中,/运算符表示真正的除,运算恒返回一个浮点型的计算结果。

 1# 整数
 2>>> 12 / 3   # classic division returns a float
 34.0
 4
 5# 涉及负数
 6>>> 12 / - 3
 7-4.0
 8
 9>>> 17 / 3
105.666666666666667
11
12# 浮点数
13>>> 27.0 / 4  
146.75

Python也支持//%运算符。其中//表示返回商的整数部分(向下取整)

1a // b == floor(a/b)

两个操作数均为整型的情况下,表达式27 // 4运算的值是整型的6(数学概念中的商),表达式27 % 4运算的值是整型的3,整数除法的余数。

在操作数有一个或两个是负数的情况下,Python谨慎地扩展了//%的语义。由于符号的缘故,我们假设变量n和m分别代表商式n / m 的被除数和除数,q = n // mr = n % m。Python保证q * m + r = n

  1. 当除数m为正数时, 0 <= r < m
1>>> (-27) // 4
2-7
3>>> (-27) % 4
41
5>>> (-7) * 4 + 1 # floored quotient * divisor + remainder
6-27
  1. 当除数m为负数时,m < r <=0
1>>> 27 // (-4)
2-7
3>>> 27 % (-4)
4-1
5>>> (-7) * (-4) + (- 1) # floored quotient * divisor + remainder
627
  1. 当被除数和除数均为负数时
1>>> (-27) // (-4)
26
3>>> (-27) % (-4)
4-3
5>>> 6 * (-4) + (-3)  # floored quotient * divisor + remainder
6-27

//%运算符的使用甚至扩展到浮点型操作数,表达式q = n // m的值是不大于商的最大整数,表达式r = n % m表示r是余数。确保q * m + r = n


Share