2010-04-20 1 views

ответ

12

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

3

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

Вот что Java spec должен сказать:

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

Смежные вопросы