Hello all,

This is my first mail into the mailing list, so please be kind with any
errors, and please point them out so we can learn from them :)

Last night I was messing with some simple arithmetic operations in irb, and
notice a funny thing: when I made subtractions (did not tested any other
operation) I did not got the expected results...

It seems that the result of floating-point subtraction is not correct... as
if it had some residual value left in some deep decimal position...
This happens in both ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux] and
ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]

I'm I missing something?
Or is it that the results are in fact incorrect and a bug should be
reported?
If so, should I report the bug into "http://redmine.ruby-lang.org/
", or where?

Thanks in advance, Zipizap

$ ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]*
*
$ irb
ruby-1.8.7-p352 :001 > 2.45 - 1.45
 => 1.0
##
## The last result is ok
##

ruby-1.8.7-p352 :002 > (0...10).map {|x| (x+0.9) - (x+0.7)}
 => [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.200000000000001,
0.200000000000001]
##
## The last results should all be 0.20 and they not only are different from
0.20 but they are also ?!?different between themselves?!?
## See the following "uniq" filter
## This also happens in Ruby 1.9.2

ruby-1.8.7-p352 :003 > (0...10).map {|x| (x+0.9) - (x+0.7)}.uniq
 => [0.2, 0.2, 0.2, 0.2, 0.200000000000001]




$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]

$ irb
ruby-1.9.2-p180 :002 >   2.45 - 1.45
 => 1.0000000000000002

ruby-1.9.2-p180 :005 >   (0...10).map {|x| (x+0.9) - (x+0.7)}
 => [0.20000000000000007, 0.19999999999999996, 0.19999999999999973,
0.19999999999999973, 0.20000000000000018, 0.20000000000000018,
0.20000000000000018, 0.20000000000000018, 0.20000000000000107,
0.20000000000000107]

ruby-1.9.2-p180 :006 > (0...10).map {|x| (x+0.9) - (x+0.7)}.uniq
 => [0.20000000000000007, 0.19999999999999996, 0.19999999999999973,
0.20000000000000018, 0.20000000000000107]