Miyashita Hikaru Miyashita Hikaru - 6 months ago 24
Python Question

how to convert string to numeric in python

I would like to convert string (%) to float.but my method didnt work well.
the result slightly differ from correct number.
for example,


0 0.1%
1 0.2%
dtype: object

first, I strip "%"


0 0.1
1 0.2
dtype: object

I tried to convert to numeric, but the result is strange.

I guess this phenomena come from binary digit system...


0 0.10000000000000000555
1 0.20000000000000001110
dtype: float64

and of course I couldnt convert % to numeric.


0 0.00100000000000000002
1 0.00200000000000000004
dtype: float64

I also tried .astype(float) method. but The result was same..

why this phenomena happen ? and how can I avoid this phenomena


Many rational numbers can't be represented exactly as a floating-point number. In particular, any number that has to have a five as a factor in the denominator, like 1/(2*5), can't be represented exactly. There isn't much you can do about this: either round the displayed number so it looks right, or use an infinite-precision library or a rational-numbers library. Here's a basic way to round the displayed number:

>>> print "%.20f" % 0.1
>>> print "%.4f" % 0.1