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

新手上路,请多包涵

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

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

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

原文由 datah4ck3r 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

floor() _四舍五入_。 int() _截断_。当您使用负数时,区别很明显:

 >>> import math
>>> math.floor(-3.5)
-4
>>> int(-3.5)
-3

对负数向下舍入意味着它们远离 0,截断使它们更接近 0。

换句话说, floor() 总是低于或等于原来的。 int() 将接近于零或等于。

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 3.0 许可协议

我测试了两种方法的时间复杂度,它们是相同的。

 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

原文由 amin saffar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题