473,238 Members | 1,935 Online

# Array and floating point

Hello,

I'm experiencing a problem where the float being appended to the array
is not the same as the result of the appending.
>>from array import *
x = array('f')
x.append(float("0.1"))
x[0]
0.10000000149011612
>>float("0.1")
0.10000000000000001

I'm expecting x[0] = 0.10000000000000001

Thanks
Jonathan Shan

Aug 17 '07 #1
2 1616
Jonathan Shan wrote:
Hello,

I'm experiencing a problem where the float being appended to the array
is not the same as the result of the appending.
>>>from array import *
x = array('f')
x.append(float("0.1"))
x[0]
0.10000000149011612
>>>float("0.1")
0.10000000000000001

I'm expecting x[0] = 0.10000000000000001
array("f") is an array of C floats while Python's float type is a double in
C terms. That's why you lose some precision. Try array("d") instead:
>>from array import array
x = array("d")
x.append(0.1)
x[0]
0.10000000000000001
Peter
Aug 17 '07 #2
Jonathan Shan wrote:
Hello,

I'm experiencing a problem where the float being appended to the array
is not the same as the result of the appending.
>>>from array import *
x = array('f')
x.append(float("0.1"))
x[0]
0.10000000149011612
>>>float("0.1")
0.10000000000000001

I'm expecting x[0] = 0.10000000000000001
'f' denotes a single-precision floating point number. Python's float objects are
double-precision floating point numbers. Use 'd' instead.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
an underlying truth."
-- Umberto Eco

Aug 17 '07 #3

This thread has been closed and replies have been disabled. Please start a new discussion.