Q: The relevant IEEE standard defines a numeric constant
NaN (not a number) and prescribes that NaN should compare as not equal to itself. Why is that? All the languages I'm familiar with implement this rule. I am sure there is a good reason why NaN comparing as equal to itself would be bad. I just can't figure out what it is.
Why is NaN not equal to NaN?
There's a very easy answer to this:
NaN is supposed to indicate that there's an error in your math calculations. If
NaN === NaN were true, then
NaN could easily be converted back into a number like so:
NaN === NaN then
z would be 1, hiding that there was a problem in the calculation of both
NaN, which should indicate that a problem happened somewhere along the line.