[Tutor] Decimals 'not equal to themselves' (e.g. 0.2 equals 0.200000001)

CNiall cniall at icedcerulean.com
Sun Aug 3 16:04:09 CEST 2008


I am very new to Python (I started learning it just yesterday), but I 
have encountered a problem.

I want to make a simple script that calculates the n-th root of a given 
number (e.g. 4th root of 625--obviously five, but it's just an example 
:P), and because there is no nth-root function in Python I will do this 
with something like x**(1/n).

However, with some, but not all, decimals, they do not seem to 'equal 
themselves'. This is probably a bad way of expressing what I mean, so 
I'll give an example:
 >>> 0.5
0.5
 >>> 0.25
0.25
 >>> 0.125
0.125
 >>> 0.2
0.20000000000000001
 >>> 0.33
0.33000000000000002

As you can see, the last two decimals are very slightly inaccurate. 
However, it appears that when n in 1/n is a power of two, the decimal 
does not get 'thrown off'. How might I make Python recognise 0.2 as 0.2 
and not 0.20000000000000001?

This discrepancy is very minor, but it makes the whole n-th root 
calculator inaccurate. :\



More information about the Tutor mailing list