From: Koji Arai <JCA02266@...>
Date: 2003-05-05T22:55:44+09:00
Subject: [ruby-dev:20163] Numeric#step

新井です。

リファレンスマニュアルの Numeric のページで話が進んでしまっ
てますが(^^; このままではやりにくいので、dev に振ってみます。
以下のような現象に合われた方はいらっしゃいませんか?

        1.1.step(1.5, 0.1) {|n| p n}
        => 1.1
           1.2
           1.3
           1.4

と、最後に 1.5 が出力されないと言うことです。うちでは、

ruby 1.8.0 (2003-05-05) [i586-linux] glibc-2.3.1-17

1.1.step(1.5, 0.1) {|n| p n}
1.1
1.2
1.3
1.4
1.5

と、1.5 まで出ます。Numeric#step は浮動小数点に対して、加算
の繰り返しによる誤差を考慮しててうまいことやっているのだと認
識してますが、環境によってこういうことがあるのですかね?

以下、Numeric のページでの報告

    2003-05-02 あれ? 1.5まで出力されるべきでは?

    2003-05-05 斎藤: 書き方が悪かったみたいで、素直に削除されてしまい
    ましたね。すみません。最新版 1.8.0 (2003-05-02) [i686-linux] では、
    以下のようになります。

    ./ruby -e '1.1.step(1.5, 0.1) {|n| print n, " "}'
    => 1.1 1.2 1.3 1.4

    2003-05-05 あらい: おや?うちではこうなります。
    ruby -ve '1.1.step(1.5, 0.1) {|n| print n, " "}'
    ruby 1.8.0 (2003-05-02) [i586-linux]
    => 1.1 1.2 1.3 1.4 1.5

    2003-05-05 あらい: と思ったら、まつもとさんにより修正されました。

	Sat May  3 11:00:12 2003  Yukihiro Matsumoto  <matz@ruby-lang.org>

	    * numeric.c (num_step): "1.1.step(1.5,0.1)" to work.

    私の動作確認はパッチ前のものだったですが 2003-05-05 版も同じ結果です。

	ruby -ve '1.1.step(1.5, 0.1) {|n| print n, " "}'
	ruby 1.8.0 (2003-05-05) [i586-linux]
	1.1 1.2 1.3 1.4 1.5 

    2003-05-05 斎藤: あれ、うちではupdateした後でも変化がなく、1.4まで
    しか表示されません。libcの問題でしょうか? ちなみにこちらの環境は
    Redhat7.1、glibc-2.2.4-32です。(まずこちらから名乗るべきところ、
    失礼いたしました)

    2003-05-05 あらい: dev に振ってみます^^;

--
新井康司 (Koji Arai)