我们能说math.floor(x) == int(x)是相似的吗?



当我想将浮点数转换为整数值时,我可以选择math.floor或将其转换为int,两个结果是相同的。

性能:int似乎30%更快

def floorTest():
    [math.floor(float(i)) for i in range(10)]
def intTest():
    [int(float(i)) for i in range(10)]
import timeit
print(timeit.timeit(stmt='floorTest()', setup='from __main__ import floorTest', number=10**7))
print(timeit.timeit(stmt='intTest()', setup='from __main__ import intTest', number=10**7))

反汇编器:我不打算粘贴结果,因为它们对于上述性能测试的floorTestintTest都是相同的。

现在的问题:

我们可以说math.floor()与铸造浮点数具有相同的效果吗int

问的原因是,我可能会监督一些观点。

不,intmath.floor有不同的行为:

>>> import math
>>> f = 1.23456
>>> int(f)
1
>>> int(-f)
-1
>>> math.floor(f)
1
>>> math.floor(-f)
-2

最新更新