我最近编写了一个简短的 Python 程序来计算数字的阶乘作为测试,看看整数乘法比浮点乘法快多少。想象一下,当我发现浮点乘法更快时,我有多惊讶!我对此感到困惑,希望有人能启发我。我使用完全相同的函数进行阶乘计算,只是将 float 与整数传递给它。这是代码:
import time
def fact(n):
n_fact = n
while n > 2:
n_fact *= n - 1
n -= 1
print(n_fact)
return n_fact
n = int(input("Enter an integer for factorial calculation: "))
n_float = float(n)
# integer factorial
start = time.time()
fact(n)
end = time.time()
print("Time for integer factorial calculation: ", end - start, "seconds.")
# float factorial
start = time.time()
fact(n_float)
end = time.time()
print("Time for float factorial calculation: ", end - start, "seconds.")
当我运行这个程序时,结果会有所不同,但总的来说,大多数时候整数计算的速度更快,这与我认为我知道的一切相反(请记住,我不是专家)。我的计时计算方法有问题吗?我是否需要运行计算数千次才能更准确地测量时间?任何见解将不胜感激。
最佳答案
感谢您的评论以及有关使用 timeit 的提示。当我使用 timeit 重新运行代码时,我发现结果与 Seb 提到的类似。也就是说,对于较小的值(对我来说,最多大约 15),整数计算速度更快,然后浮点计算速度更快(对于较大的值,速度明显更快)。这正是我所期望的!
关于python - Python 中的整数与浮点乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60338457/