web-dev-qa-db-fra.com

Numpy float64 vs Python float

Je me bats avec des problèmes de virgule flottante dans la fonction Pandas read_csv. Dans mon enquête, j'ai trouvé ceci:

In [15]: a = 5.9975

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

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

Pourquoi est intégré float de Python et le np.float64 type de Python donnant des résultats différents? Je pensais qu'ils étaient tous les deux des doubles C++?

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

Ils sont le même nombre. Ce qui diffère, c'est leur représentation; le type natif Python utilise une représentation "saine" et le type NumPy utilise une représentation précise.

22