Как делает Double.isNaN () работа?

Солнце jdk реализация похоже на это:

return v != v;

Кто-либо может объяснить, как это работает?

8
задан whiskeysierra 20 April 2010 в 21:59
поделиться

2 ответа

Значения NaN ничему не равны (если одна сторона равенства - NaN, равенство ложно), поэтому NaN! = NaN. Очевидно, что каждый нормальный double равен самому себе

13
ответ дан 5 December 2019 в 10:01
поделиться

Нан - единственный двойник, не равный себе. Таким образом, проверка v! = V даст True только для NaN.

Вот что говорится в спецификации Java :

Операторы с плавающей точкой не создают исключений (§11). Операция, при которой переполняется, создает бесконечность со знаком, операция, при которой происходит переполнение, дает денормализованное значение или знаковый ноль, и операция, не имеющая {{ 1}} математически определенный результат дает NaN. Все числовые операции с NaN в качестве операнда производят NaN как результат . Как уже было описано, NaN неупорядочено, поэтому операция числового сравнения с участием одного или двух NaN возвращает false, а любое ! = Сравнение с участием NaN возвращает истину, включая x! = x, когда x равно NaN.

4
ответ дан 5 December 2019 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: