在Python 2中,floor()
返回了一个浮点值。虽然对我来说不是很明显,但我找到了一些解释,说明为什么让floor()
返回float(对于像float('inf')
和float('nan')
这样的情况)可能有用。
但是,在Python 3中,floor()
返回整数(并返回前面提到的特殊情况的溢出错误)。
那么现在int()
和floor()
之间有什么区别?
答案 0 :(得分:82)
floor()
轮次向下。 int()
截断。使用负数时,差异很明显:
>>> import math
>>> math.floor(-3.5)
-4
>>> int(-3.5)
-3
向下舍入负数表示它们从0移开,截断将它们移近0。
换句话说,floor()
总是低于或等于原始版本。 int()
将接近零或相等。
答案 1 :(得分:5)
我测试两种方法的时间复杂度是否相同
from time import time
import math
import random
r = 10000000
def floorTimeFunction():
for i in range(r):
math.floor(random.randint(-100,100))
def intTimeFunction():
for i in range(r):
int(random.randint(-100,100))
t0 = time()
floorTimeFunction()
t1 = time()
intTimeFunction()
t2 = time()
print('function floor takes %f' %(t1-t0))
print('function int takes %f' %(t2-t1))
输出为:
# function floor takes 11.841985
# function int takes 11.841325