В соответствии с спецификациями языка Java NaN
не равно NaN
.
Поэтому любая строка, которая привела к x
равным NaN
, это, например
double x=Math.sqrt(-1);
Из спецификации языка Java:
Операторы с плавающей точкой не вызывают исключений (§11). Операция, которая переполняет, создает подписанную бесконечность, операция, которая выполняется под потоком, создает денормализованное значение или подписанный нуль, а операция, не имеющая математически определенного результата, дает NaN. В результате числовые операции с NaN в качестве операнда дают NaN. Как уже было описано, NaN неупорядочен, поэтому операция числового сравнения с одним или двумя NaN возвращает false, а любое! = Сравнение с NaN возвращает true, включая x! = X, когда x является NaN.
blockquote>