只是一个一般性问题,关于使用这两种不同数据类型应该期望什么样的运行时差异。
我的测试:
test = [100.0897463, 1.099999939393,1.37382829829393,29.1937462874847272,2.095478262874647474]
test2 = [decimal.Decimal('100.0897463'), decimal.Decimal('1.09999993939'), decimal.Decimal('1.37382829829'), decimal.Decimal('29.1937462875'), decimal.Decimal('2.09547826287')]
def average(numbers, ddof=0):
return sum(numbers) / (len(numbers)-ddof)
%timeit average(test)
%timeit average(test2)
运行时间差异为:
1000000 次循环,3 次取最佳值:每次循环 364 纳秒
10000 次循环,3 次取最佳值:每次循环 80.3 微秒
因此,使用十进制小数比使用浮点数慢大约200倍。当我决定使用哪种数据类型时,这种差异是否正常并符合我的期望?
float
在C中深度实现,而decimal
看起来像是一个没有内置到Python解释器中的模块/包。 - linusg