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 // m
和 r = n % m
。Python保证q * m + r = n
。
- 当除数m为正数时, 0 <= r < m
1>>> (-27) // 4
2-7
3>>> (-27) % 4
41
5>>> (-7) * 4 + 1 # floored quotient * divisor + remainder
6-27
- 当除数m为负数时,m < r <=0
1>>> 27 // (-4)
2-7
3>>> 27 % (-4)
4-1
5>>> (-7) * (-4) + (- 1) # floored quotient * divisor + remainder
627
- 当被除数和除数均为负数时
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
。