Потеря точности при работе с очень маленькими числами в массивах Python

У меня есть два массива в типе float64, и когда я присваиваю значение первого второму, он округляет значение. Следующий простой код иллюстрирует проблему и исключает возможность простого представления чисел. (Я схематизировал фрагмент своего кода, чтобы было удобнее читать, но по сути это одно и то же)

X = zeros((2,2))
Y = zeros((2,2))
Z = X            #a shorter way of making a new matrix, equal to X...
X[0,0] = Y[0,0]
Z[0,0]=0
print Y[0,0]
print X[0,0]
print type(Y[0,0])
print type(X[0,0])
if X[0,0]==Y[0,0]:
   print'they are equal'
else:
   print'they are NOT equal'

Я запустил этот небольшой фрагмент кода для всех коэффициентов, и все результаты похожи на эти:

1.90897e-14
0
<type 'numpy.float64'>
<type 'numpy.float64'>
they are NOT equal

Мне кажется, что массив X имеет другой тип, но создается он точно так же, с помощью функции zeros() со стандартным типом (float64)

Edit: The arrays are initialized with

X = zeros((2,2), dtype=float64)
Y = zeros((2,2), dtype=float64)

Также включил дополнительный полезный вывод в пример выше.

Редактировать: добавил проблемные строки, после того как нашел проблему

5
задан Diego 24 September 2011 в 01:04
поделиться