【发布时间】:2013-01-04 20:31:00
【问题描述】:
我从radix sort 看到了这个代码示例:
def getDigit(num, base, digit_num):
# pulls the selected digit
return (num // base ** digit_num) % base
// 在 Python 中的作用是什么?
【问题讨论】:
标签: python floor-division
我从radix sort 看到了这个代码示例:
def getDigit(num, base, digit_num):
# pulls the selected digit
return (num // base ** digit_num) % base
// 在 Python 中的作用是什么?
【问题讨论】:
标签: python floor-division
Python3 支持两种除法,浮点(/)和整数(//)。
浮点数:45/2 = 22.5
整数:45//2 = 22
【讨论】:
2.99//1 == 2.0。
// 是楼层除法运算符。它生成其操作数的商的底数,而不对整数操作数进行浮点舍入。这有时也称为整数除法,尽管您可以将它与浮点数一起使用,因为默认情况下使用 / 将整数除法。
在 Python 3 中,普通的/ 除法运算符会返回浮点值,即使两个操作数都是整数,因此需要使用不同的运算符进行下除法。这与 Python 2 不同,在 Python 2 中,/ 如果两个操作数都是整数,则执行下限除法,如果至少有一个操作数是浮点值,则执行浮点除法。
// 运算符首次引入是为了在 Python 2.2 中实现前向兼容性,当时决定 Python 3 应该具有这种新功能。再加上通过from __future__ import division(也在 Python 2.2 中引入)启用 Python 3 行为的能力,这使您能够在 Python 2 中编写与 Python 3 兼容的代码。
【讨论】:
// 在 python2.x 中也表示整数除法。如果你想进行整数除法,你应该使用// 而不是/,不管你使用的是什么版本的python。
你可以试试:
In []: 5/2
Out[]: 2
In []: 5.0/2
Out[]: 2.5
In []: 5.0//2
Out[]: 2.0
这应该是不言自明的。
(这是在 Python 2.7 中。)
【讨论】: