Соответствующий стандарт IEEE определяет числовую константу NaN (а не число) и предписывает, чтобы NaN сравнивался как не равный себе. Почему это?
Все языки, с которыми я знаком, реализуют это правило. Но это часто вызывает значительные проблемы, например неожиданное поведение, когда NaN хранится в контейнере, когда NaN находится в сортируемых данных и т.д. Не говоря о том, что подавляющее большинство программистов ожидают, что любой объект будет равен самому себе ( прежде чем они узнают о NaN), поэтому удивительно, что они добавляют к ошибкам и путанице.
Стандарты IEEE хорошо продуманны, поэтому я уверен, что есть веская причина, почему сравнение NaN как равное с самим собой было бы плохим. Я просто не могу понять, что это такое.