Да, используя тот факт, что NaN
не равен любому другому числу, включая его самого.
Это имеет смысл, когда вы думаете о том, что означает NaN
тот факт, что вы создали значение, которое на самом деле не в ваших силах для представления «нормальными» значениями с плавающей запятой.
Итак, если вы создадите два числа, в которых вы не знаете, что это такоеВы вряд ли можете считать их равными.Они могут быть, но, учитывая довольно большую вероятность того, что числа могут быть (на самом деле бесконечными), шансы, что два одинаковых числа исчезающе малы: -)
Вы можетелибо ищите функцию (на самом деле макрос), например isnan
(в math.h
для C и cmath
для C ++), либо просто используйте свойство, что значение NaN
не равно само себе с чем-то вроде:
if (myFloat != myFloat) { ... }
Если по какой-то странной причине ваша реализация на C не имеет isnan
(так должно быть, так как это предусмотрено стандартом), вы можете написать свой собственный код, например:
int isnan_float (float f) { return (f != f); }