NumPy浮動小数点配列の要素の精度は、マシンのεによって制限されることを理解しています。精度差: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]
私は32ビットPython 2.7.12インストールを64ビットWindows上で実行しています。