Path: csiph.com!x330-a1.tempe.blueboxinc.net!feeder1.hal-mli.net!feeder.news-service.com!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!talisker.lacave.net!lacave.net!not-for-mail From: Joey Zhou Newsgroups: comp.lang.ruby Subject: Exclusive float range, Range#step result in counterintuitive result Date: Thu, 14 Apr 2011 07:42:47 -0500 Organization: Service de news de lacave.net Lines: 35 Message-ID: NNTP-Posting-Host: bristol.highgroove.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Trace: talisker.lacave.net 1302785006 32084 65.111.164.187 (14 Apr 2011 12:43:26 GMT) X-Complaints-To: abuse@lacave.net NNTP-Posting-Date: Thu, 14 Apr 2011 12:43:26 +0000 (UTC) X-Received-From: This message has been automatically forwarded from the ruby-talk mailing list by a gateway at comp.lang.ruby. If it is SPAM, it did not originate at comp.lang.ruby. Please report the original sender, and not us. Thanks! For more details about this gateway, please visit: http://blog.grayproductions.net/categories/the_gateway X-Mail-Count: 381525 X-Ml-Name: ruby-talk X-Rubymirror: Yes X-Ruby-Talk: Xref: x330-a1.tempe.blueboxinc.net comp.lang.ruby:2841 Hi everybody, I find that: if range.exclude_end? == true and [begin_obj, end_obj, step].grep(Float) != [] and [begin_obj, end_obj, step].any? {|f| f != f.to_i} then # result will miss the last one end for example: p (1...6.3).step.to_a # => [1.0, 2.0, 3.0, 4.0, 5.0], missing 6.0 p (1.1...6).step.to_a # => [1.1, 2.1, 3.1, 4.1], missing 5.1 p (1...6).step(1.1).to_a # => [1.0, 2.1, 3.2, 4.300000000000001], missing 5.4 p (1.0...6.6).step(1.9).to_a # => [1.0, 2.9], missing 4.8 p (1.0...6.7).step(1.9).to_a # => [1.0, 2.9, 4.8], 6.7 == 4.8 + 1.9, it's ok The results seem so counterintuitive, is it a bug? Maybe I should report it? Thank you! Joey -- Posted via http://www.ruby-forum.com/.