From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2009-07-13T21:13:53+09:00 Subject: [ruby-dev:38772] Re: [Bug #1720] [NaN] == [NaN] が true になる けいじゅ@いしつかです. In [ruby-dev:38735] the message: "[ruby-dev:38735] Re: [Bug #1720] [NaN] == [NaN] が true になる", on Jul/05 01:31(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです > (1) NaN == NaN も true にする > 一貫性はあるが NaN の本来の挙動ではない > (2) rb_equal()でまずequal?でのチェックをやめる > 性能が劣化するので避けたい > (3) rb_equal()でT_FLOATを特別扱い > 2ほどではないにしても性能劣化が気になる > 特別扱いは後悔することが多い > (4) このまま。これは例外的なケースとする >私自身は、どれが良いという意見を現時点では持たないのですが、 >どれが好きかと言われれば、(1)が好きです。 わたしも, (1)のような気がします. というか, (1')ですか: (1') nan1 = 0.0/0 nan2 = 0.0/0 として, nan1 == nan1 => true nan1 == nan2 => false 現行では, nan1.equal?(nan1) なのに, nan1 == nan1 => false となるのは,オブジェクト指向的にかなり気分の悪い仕様だと思います. nan1 とnan1の値はやはり同じだとしてよいと思います. > 一貫性はあるが NaN の本来の挙動ではない とありますが, それに関しては nan1 == nan2 => false になれば問題ないき がします. __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<---