0

Possible Duplicate:
Python float - str - float weirdness

I run the following code in python on codepad.org:

num = 1.6
print num
list = [num]
print list
num2 = list[0]
print num2

And I get the following output:

1.6
[1.6000000000000001]
1.6

Why the tiny deviation in the list?

Community
  • 1
  • 1
Robz
  • 1,747
  • 5
  • 21
  • 35
  • 6
    Good thing you found the `floating-point` tag. Go read some high-voted questions with that tag, no use in repeating the same mantra every time someone is tripped up by them. –  Sep 10 '11 at 21:33

1 Answers1

3

list.__str__ calls repr on its elements, where as print calls str:

>>> str(1.6)
'1.6'
>>> repr(1.6)
'1.6000000000000001'

Since floating point numbers are not guaranteed to be exact (and cannot be exact for values that can't be expressed as a * 2b for integers a,b), both representations are correct, or, in other words:

>>> 1.6 == 1.6000000000000001
True
phihag
  • 278,196
  • 72
  • 453
  • 469