There're strange thing in pack/unpack floating point data in array. It changes one of last digits of number:
from struct import *
data = pack("<f", 1096037602)
print unpack("<f", data)
> 1096037632
What factor in implementation of floating point causes it?