Issue #13146 has been updated by Robert A. Heiler.


This is actually interesting altogether.

First that Float::NAN becomes NaN in the display; this is the first surprise to me.

But second, that we have seemingly the same key twice (???), at the least in the display.

    {NaN=>1, NaN=>2}

Should not the second key be a negative one? I guess NaN does not specify this as any more
accurate but it treats them as two different entries in the hash regardless, or? That is a
bit confusing to me.

I have no idea if this is a correct behaviouor or not but to me this was a surprise to see.

Some docu can be found here:

  http://ruby-doc.org/core-2.0.0/Float.html

"NAN: An expression representing a value which is °»not a number°…."

To me I guess the surprise is that NAN in itself should be unique? But in hashes you can 
store different NANs? Then again I probably do not understand anything anyway. :)

----------------------------------------
Bug #13146: Float::NANs in Hashes are confusing (more than usual). 
https://bugs.ruby-lang.org/issues/13146#change-62637

* Author: Linus Sellberg
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.3.1p112
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
`test = {Float::NAN => 1, -Float::NAN => 2}
=> {NaN=>1, NaN=>2}

test.values_at(Float::NAN, -Float::NAN)
=> [1, nil]`

I don't know what the correct behaviour ought to be, but it seems inconsistent to create a hash with two elements but not be able to extract both values.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>