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++?
>>> 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.