This is closely related to CLJ-1036, but there was a suggestion to make a new ticket.
The issue is that for a float f and a double d, we can have (= f d) but not (= (hash f) (hash d)), which breaks a fundamental assumption about hash/equality consistency and leads to weirdness like this (from Immo Heikkinen's email to the Clojure mailing list):
One way to resolve this would be to tweak the hashing of floats and/or doubles, but that suggestion has apparently been rejected.
An alternative would be to modify = so that it never returns true for float/double comparisons. One should never compare floats with doubles using = anyway, so such a change should have minimal impact beyond restoring hash/equality consistency.