Can somebody please reopen this issue? Since the test suite fix is
apparently wrong.

Thank you.


Vit


2011/8/30 Vit Ondruch <v.ondruch / tiscali.cz>

>
> Issue #4576 has been updated by Vit Ondruch.
>
> File 0001-Fix-the-ronding-error-causing-wrong-evaluation-of-ra.patch added
>
> Usaku NAKAMURA wrote:
> > =begin
> >  Hello,
> >
> >  In message "[ruby-core:35804] [Ruby 1.9 - Bug #4576] Range#step miss the
> last value, if end-exclusive and has float number"
> >      on Apr.18,2011 12:06:24, <redmine / ruby-lang.org> wrote:
> >  > test_step_ruby_core_35753 seems depend on platform.
> >  > On i686-linux it fails.
> >
> >  Ah, I doubt it. Thank you.
> >
> >
> >  > May i partially revert an testcase of test_step_ruby_core_35753?
> >
> >  No.
> >  I guess that 1.5 stepping doesn't have error.
> >  Please test r31304.
> >
> >
> >  Regards,
> >  --
> >  U.Nakamura <usa / garbagecollect.jp>
> > =end
>
> Can we reopen this issue please? The fix of unit tests was wrong, fixing
> consequences instead of reasons. Moreover, it was not backported to 1.8.7,
> so we hit the issue again when preparing updated package for RHEL 6.2. You
> can find the discussion about the issue at [1] including proposed solution
> [2]. Could you please review and apply the attached patch and also backport
> it to 1.8.7?
>
> [1] https://bugzilla.redhat.com/show_bug.cgi?id=733372
> [2] https://bugzilla.redhat.com/attachment.cgi?id=520552
> ----------------------------------------
> Bug #4576: Range#step miss the last value, if end-exclusive and has float
> number
> http://redmine.ruby-lang.org/issues/4576
>
> Author: Joey Zhou
> Status: Closed
> Priority: Normal
> Assignee:
> Category:
> Target version:
> ruby -v: -
>
>
> =begin
> Hi, I find that:
>
> * if: range.exclude_end? == true
> * and: any one in [begin_obj, end_obj, step] is a true Float(f.to_i != f)
> * and: unless begin_obj + step*int == end_obj
> * then: the result will miss the last value.
>
> for example:
>
>  p (1...6.3).step.to_a # => [1.0, 2.0, 3.0, 4.0, 5.0], no 6.0
>  p (1.1...6).step.to_a # => [1.1, 2.1, 3.1, 4.1], no 5.1
>  p (1...6).step(1.1).to_a # => [1.0, 2.1, 3.2, 4.300000000000001], no 5.4
>
>  p (1.0...6.6).step(1.9).to_a # => [1.0, 2.9], no 4.8
>  p (1.0...6.7).step(1.9).to_a # => [1.0, 2.9, 4.8]
>  p (1.0...6.8).step(1.9).to_a # => [1.0, 2.9, 4.8], no 6.7
>
> Maybe the #step is ok on integers, but there's something wrong if the range
> is end-exclusive and contain float numbers.
> =end
>
>
>
> --
> http://redmine.ruby-lang.org
>
>