From: mail@... Date: 2017-01-26T13:29:11+00:00 Subject: [ruby-core:79268] [Ruby trunk Bug#13146] Float::NANs in Hashes are confusing (more than usual). Issue #13146 has been updated by Stefan Sch����ler. Somehow, using `-Float::NAN` in a hash or array results in new objects being created: ```ruby -Float::NAN.object_id #=> -70362448918680 [-Float::NAN, -Float::NAN, -Float::NAN].map(&:object_id) #=> [70362448604580, 70362448604520, 70362448604500] ``` As a result, these objects are no longer equal. `Float::NAN` on the other hand behaves as expected: ```ruby Float::NAN.object_id #=> 70362448918680 [Float::NAN, Float::NAN, Float::NAN].map(&:object_id) #=> [70362448918680, 70362448918680, 70362448918680] ``` The same happens with `-Float:INFINITY`. ---------------------------------------- Bug #13146: Float::NANs in Hashes are confusing (more than usual). https://bugs.ruby-lang.org/issues/13146#change-62686 * 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: