From: Tanaka Akira Date: 2011-09-18T08:27:27+09:00 Subject: [ruby-core:39612] Re: [Ruby 1.9 - Bug #4576] Range#step miss the last value, if end-exclusive and has float number 2011/9/17 Yusuke ENDOH : > Maybe this "consideration" causes the following behavior: > > p (1.0..12.7).step(1.3).all? {|n| n <= 12.7 } #=> false > p (1.0..12.7).step(1.3).to_a > #=> [1.0, 2.3, 3.6, 4.9, 6.2, 7.5, 8.8, 10.1, 11.4, 12.700000000000001] > > Is this ok? > I guess the result length will vary if this is fixed simply. One idea is that yield the end value instead. Index: numeric.c =================================================================== --- numeric.c (revision 33291) +++ numeric.c (working copy) @@ -1693,7 +1693,10 @@ ruby_float_step(VALUE from, VALUE to, VA n = floor(n + err); if (!excl || ((long)n)*unit+beg < end) n++; for (i=0; i