From: merch-redmine@... Date: 2021-04-29T22:22:58+00:00 Subject: [ruby-core:103668] [Ruby master Bug#16612] Enumerator::ArithmeticSequence#last with float range produces incorrect value Issue #16612 has been updated by jeremyevans0 (Jeremy Evans). I've traced this to an off-by-one in `ruby_float_step_size`. I've submitted a pull request to fix this: https://github.com/ruby/ruby/pull/4434 @Eregon Unfortunately, you can't get `#each` to work like repeated edition without breaking backwards compatibility. It can change terminating loops into infinite loops in pathologic cases, and such pathological cases are part of the test suite. I tried that approach first (https://github.com/jeremyevans/ruby/commit/962edf65affe8ab1fc18b9a46317c543ef31bec8). ---------------------------------------- Bug #16612: Enumerator::ArithmeticSequence#last with float range produces incorrect value https://bugs.ruby-lang.org/issues/16612#change-91762 * Author: bjfish (Brandon Fish) * Status: Assigned * Priority: Normal * Assignee: mrkn (Kenta Murata) * ruby -v: 2.7.0 * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- **Steps to reproduce** ``` shell % ruby -e 'p ((0.24901079128550474)...(340.25008088980684)).step(34.00010700985213).last' 340.2500808898068 ``` **Expected result** Last value should match the value produced by the following: ``` shell ruby -e 'p ((0.24901079128550474)...(340.25008088980684)).step(34.00010700985213).to_a[-1]' 306.24997387995467 ``` **Environment** This was observed in versions `2.7.0` and `2.6.5`. -- https://bugs.ruby-lang.org/ Unsubscribe: