« Return to Thread: [ruby-dev:38725] [Bug #1720] [NaN] == [NaN] が true になる

[ruby-dev:38734] Re: [Bug #1720] [NaN] == [NaN] が true になる

by Yukihiro Matsumoto :: Rate this Message:

Reply to Author | View in Thread

まつもと ゆきひろです

In message "Re: [ruby-dev:38725] [Bug #1720] [NaN] == [NaN] が true になる"
    on Fri, 3 Jul 2009 21:43:24 +0900, tadayoshi funaba <redmine@...> writes:

|NaN = 0.0/0
|[NaN] == [NaN] が true になりますが、
|
|NaN == NaN #=> false
|[1] == [1.0] #=> true
|
|という結果からするとおかしいように思います。

確かに。rb_equal()が両辺が同じオブジェクトのときにメソッド呼
び出しを行わずに真を返しているせいですね。NaNというのは、
equal?が成立しても==が成立しないという特異なオブジェクトであ
るためにこの問題が発生しています。

とはいえ、こんな特殊な例のために同値性チェックを遅くしたくな
いし、困ったものです。

 « Return to Thread: [ruby-dev:38725] [Bug #1720] [NaN] == [NaN] が true になる