Python 3中的int()和floor()有什么区别?

时间:2015-06-24 20:13:58

标签: python python-3.x floating-point

在Python 2中,floor()返回了一个浮点值。虽然对我来说不是很明显,但我找到了一些解释,说明为什么让floor()返回float(对于像float('inf')float('nan')这样的情况)可能有用。

但是,在Python 3中,floor()返回整数(并返回前面提到的特殊情况的溢出错误)。

那么现在int()floor()之间有什么区别?

2 个答案:

答案 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