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

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

by Keiju ISHITSUKA :: Rate this Message:

Reply to Author | View in Thread

けいじゅ@いしつかです.

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@... <<---

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