Decimals not equalling themselves (e.g. 0.2 = 0.2000000001)

Larry Bates larry.bates at websafe.com`
Mon Aug 4 00:30:29 CEST 2008


CNiall wrote:
> 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. :\

What are they teaching in computer science classes these days?

-Larry



More information about the Python-list mailing list