私はPandas read_csv関数で浮動小数点の問題と戦っています。私の調査で、これを見つけました:
In [15]: a = 5.9975
In [16]: a
Out[16]: 5.9975
In [17]: np.float64(a)
Out[17]: 5.9974999999999996
ビルトインfloat
がPythonおよびnp.float64
type from Python異なる結果が得られましたか?それらは両方ともC++のダブルだと思いましたか?
>>> numpy.float64(5.9975).hex()
'0x1.7fd70a3d70a3dp+2'
>>> (5.9975).hex()
'0x1.7fd70a3d70a3dp+2'
それらは同じ番号です。異なるのは、それらの表現です。 Pythonネイティブタイプは「健全な」表現を使用し、NumPyタイプは正確な表現を使用します。