My one cent:

But I think (and it's just my humble opinion) is in the scope of Clojure
keep its consistency, am I right?

I mean, if doubles and floats are different, and they are, I think we
should always get equality test as false. Or always as true, if they're
nominally the same value.

Regards

Plínio

On Thu, Jan 22, 2015 at 12:18 PM, Andy Fingerhut <andy.finger...@gmail.com>
wrote:

> "It is out of scope for Clojure to fix this for Java types Float/Double"
>  -- comments in CLJ-1036: http://dev.clojure.org/jira/browse/CLJ-1036
>
> Andy
>
> On Thu, Jan 22, 2015 at 5:53 AM, Nicola Mometto <brobro...@gmail.com>
> wrote:
>
>>
>> Not sure if this is intended behaviour:
>> user=> (= (float 1.6) (double 1.6))
>> false
>> user=> (= (float 1.5) (double 1.5))
>> true
>>
>> I.e. = (and ==) will return true when comparing floats with doubles IFF
>> the float's .doubleValue roundtrips to the same double it's comparing to.
>>
>> user=> (.doubleValue (float 1.6))
>> 1.600000023841858
>> user=> (.doubleValue (float 1.5))
>> 1.5
>>
>> I'm not sure why floats are not handled specially in Numbers.java so
>> that hash/comparision is handled consistently with doubles (e.g. by
>> converting the floats to the fitting double via Double.parseDouble),
>> the current behaviour seems odd to me.
>>
>> Jozef Wagner writes:
>>
>> > More on this behavior http://dev.clojure.org/jira/browse/CLJ-1036
>> >
>> > On Thu, Jan 22, 2015 at 2:00 PM, Nicola Mometto <brobro...@gmail.com>
>> wrote:
>> >
>> >>
>> >> Looking at the PHM impl, this looks like it's caused by (float 0.5) and
>> >> (double 0.5) hashing differently.
>> >>
>> >> user=> (= (float 0.5) (double 0.5))
>> >> true
>> >> user=> (map hash [(float 0.5) (double 0.5)])
>> >> (1056964608 1071644672)
>> >>
>> >> Nicola Mometto writes:
>> >>
>> >> > Looks like it's a bug in PersistentHashMap:
>> >> > user=> (contains? (hash-map {:a (float 0.5)} 1) {:a (double 0.5)})
>> >> > false
>> >> > user=> (contains? (array-map {:a (float 0.5)} 1) {:a (double 0.5)})
>> >> > true
>> >> >
>> >> > Immo Heikkinen writes:
>> >> >
>> >> >> (= (float 0.5) (double 0.5))
>> >> >> => true
>> >> >> (= #{(float 0.5)} #{(double 0.5)})
>> >> >> => true
>> >> >> (= {:a (float 0.5)} {:a (double 0.5)})
>> >> >> => true
>> >> >> (= #{{:a (float 0.5)}} #{{:a (double 0.5)}})
>> >> >> => false
>> >> >>
>> >> >>
>> >> >> Tested with both 1.6.0 and 1.7.0-alpha5.
>> >>
>> >> --
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google
>> >> Groups "Clojure" group.
>> >> To post to this group, send email to clojure@googlegroups.com
>> >> Note that posts from new members are moderated - please be patient with
>> >> your first post.
>> >> To unsubscribe from this group, send email to
>> >> clojure+unsubscr...@googlegroups.com
>> >> For more options, visit this group at
>> >> http://groups.google.com/group/clojure?hl=en
>> >> ---
>> >> You received this message because you are subscribed to the Google
>> Groups
>> >> "Clojure" group.
>> >> To unsubscribe from this group and stop receiving emails from it, send
>> an
>> >> email to clojure+unsubscr...@googlegroups.com.
>> >> For more options, visit https://groups.google.com/d/optout.
>> >>
>>
>> --
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to