web-dev-qa-db-de.com

Numpy float64 vs Python float

Ich kämpfe mit einigen Gleitkommaproblemen in der Funktion Pandas read_csv. Bei meiner Untersuchung stellte ich Folgendes fest:

In [15]: a = 5.9975

In [16]: a
Out[16]: 5.9975

In [17]: np.float64(a)
Out[17]: 5.9974999999999996

Warum ist float aus Python und dem np.float64 type from Python mit unterschiedlichen Ergebnissen? Ich dachte, sie wären beide C++ - Doubles?

23
mchangun
>>> numpy.float64(5.9975).hex()
'0x1.7fd70a3d70a3dp+2'
>>> (5.9975).hex()
'0x1.7fd70a3d70a3dp+2'

Sie sind die gleiche Nummer. Was sich unterscheidet, ist ihre Darstellung; Der native Typ Python verwendet eine "vernünftige" Darstellung, und der Typ NumPy verwendet eine genaue Darstellung.