Я понимаю, что точность элемента float массива NumPy ограничена машиной epsilon.Прецизионность: массив объектов NumPy против Float Array
Однако я стараюсь понять, почему указание типа данных массива как объекта 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.