我知道NumPy浮點數組元素的精度受機器epsilon的限制。精度差異:NumPy對象數組與浮點數組
但是,我很努力地理解,爲什麼指定數組的數據類型作爲Python對象而不是默認的float,導致數組存儲我提供的精確值。有人可以解釋這種行爲嗎?
下面的代碼說明了與浮點數據類型相關的舍入誤差以及使用對象數據類型時的精度變化。
import numpy as np
np.set_printoptions(precision=64)
MyArray = np.empty(2)
MyArray.fill(0.442)
print(MyArray)
# [ 0.442000000000000003996802888650563545525074005126953125
# 0.442000000000000003996802888650563545525074005126953125]
MyArray_precise = np.empty(2, dtype = object)
MyArray_precise.fill(0.442)
print(MyArray_precise)
# [0.442 0.442]
我在64位Windows上運行32位Python 2.7.12安裝。