当我想将浮点数转换为整数值时,我可以选择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))
反汇编器:我不打算粘贴结果,因为它们对于上述性能测试的floorTest
和intTest
都是相同的。
现在的问题:
我我们可以说
math.floor()
与铸造浮点数具有相同的效果吗int
?
问的原因是,我可能会监督一些观点。
不,int
和math.floor
有不同的行为:
>>> import math
>>> f = 1.23456
>>> int(f)
1
>>> int(-f)
-1
>>> math.floor(f)
1
>>> math.floor(-f)
-2