I'm battling some floating point problems in Pandas read_csv function. In my investigation, I found this:
In [15]: a = 5.9975
In [16]: a
Out[16]: 5.9975
In [17]: np.float64(a)
Out[17]: 5.9974999999999996
Why is builtin float of Python and the np.float64 type from Python giving different results? I thought they were both C++ doubles?
read_csvfunction employs its own super-fast string-to-float conversion that is not correctly rounded. Thus after exporting a value and re-reading it, the recovered value may end up being 1 or 2 ulps different from the original. - Mark Dickinson