只是關於使用這兩種不同數據類型之間應該期待什麼樣的運行時差異的一般問題。十進制Python與浮點運行時間
我的測試:
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)
在運行時的區別是:
百萬循環,最好的3:每圈364納秒
10000圈,最好的3:每圈80.3微秒
所以使用小數點比使用浮點數慢大約200倍。這種類型的差異是否正常,並且根據我在決定使用哪種數據類型時應該預期的方式?
我想這是因爲Python類型'float'是C語言深處實現的地方,而'decimal'看起來像是一個未內置於Python解釋器的模塊/包。 – linusg