Я проверил is_numeric
функция в NAN
константа в PHP и данный результат
is_numeric(NAN); // TRUE
Но NAN означает «не число». Почему функция is_numeric
возвращается true
?
Я знаю, что NAN имеет float
тип. Но при тестировании двух приведенных ниже случаев результаты отличаются:
is_float(NAN) // true
filter_var(NAN, FILTER_VALIDATE_FLOAT)// false
Почему это произошло?
Извини я плохо знаю английский
NAN
это особая константа. Он должен содержать некоторое значение, поэтому он содержит float
тип данных
var_dump(NAN); // float(NAN);
Проблема в том, что filter_var
не сравнивает типы данных, он ищет цифры, которые NAN
не является.
Некоторые числовые операции могут привести к значению, представленному константой NAN. Этот результат представляет неопределенное или непредставимое значение в вычислениях с плавающей запятой. Любое свободное или строгое сравнение этого значения с любым другим значением, в том числе и с самим собой, будет иметь результат FALSE.
Поскольку NAN представляет любое количество различных значений, NAN не следует сравнивать с другими значениями, включая себя, и вместо этого следует проверять на использование is_nan ().
NAN — это ненулевое значение с плавающей точкой. Что такое NAN, это квадратный корень из (-1)
,
Так что теперь речь идет о комплексных числах. Квадратный корень (-1)
является +i
или же -i
что означает, что NAN может иметь два значения. Так что если NAN
должны были оценить -i
или же false
, NAN == false
станет правдой вместо этого.