Array#pack and String#unpack query

A

Anton Hörnquist

Hi,

In order to learn a bit of ruby I'm trying to make a module for reading
and writing audio files in WAV format. First and foremost I'd like to
read and write files with 32-bit float bitdepth.

I'm using Array#pack and String#unpack but run into trouble with
precision.

The following of code..

arr = [ 1.0, 0.75, 0.5, 0.1, 0.025, 0.01 ]
p arr.pack("e*").unpack("e*")
p arr.pack("E*").unpack("E*")

...will output this:

[1.0, 0.75, 0.5, 0.100000001490116, 0.025000000372529,
0.00999999977648258]
[1.0, 0.75, 0.5, 0.1, 0.025, 0.01]

How come?

/Anton
 
A

Anton Hörnquist

I forgot a thing: I expected the output to be the same for "e*" and
"E*":

[1.0, 0.75, 0.5, 0.1, 0.025, 0.01]
[1.0, 0.75, 0.5, 0.1, 0.025, 0.01]

Am I wrong?

/Anton

Hi,

In order to learn a bit of ruby I'm trying to make a module for reading
and writing audio files in WAV format. First and foremost I'd like to
read and write files with 32-bit float bitdepth.

I'm using Array#pack and String#unpack but run into trouble with
precision.

The following of code..

arr = [ 1.0, 0.75, 0.5, 0.1, 0.025, 0.01 ]
p arr.pack("e*").unpack("e*")
p arr.pack("E*").unpack("E*")

...will output this:

[1.0, 0.75, 0.5, 0.100000001490116, 0.025000000372529,
0.00999999977648258]
[1.0, 0.75, 0.5, 0.1, 0.025, 0.01]

How come?

/Anton
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top