Returns a hash code for a numerical value.
The hash code is compatible with equality. It returns the same value
for an int and a double with the same numerical value, and therefore
the same value for the doubles zero and minus zero.
No guarantees are made about the hash code of NaN.