On 8/9/07, Luis Parravicini <lparravi / gmail.com> wrote:
> Hello
>
> I'm reading Java class files using ruby and found some problems when
> handling float values. The numbers are stored using IEEE 754 format.
> After several hours trying and thinking I might be using unpack the
> wrong way, I've wrote the following code which packs a Float and then
> immediately unpacks it. And the result is different from the original
> value.
>
> ------------
> a = 0.1234567
> b = [a].pack('g').unpack('g')[0]

Hmm I am not sure that this is exactly related but I would rather find
this behavior normal, given my old memories of floating number
representation, look at this e.g.

irb(main):004:0> 0.1234567 + 1000 - 1000
=> 0.12345670000002

If you use enough bits you are fine:

b = [a].pack('G').unpack('G')

HTH
Robert

-- 
[...] as simple as possible, but no simpler.
-- Attributed to Albert Einstein