Почему is_numeric (NAN) возвращает TRUE?

Я проверил 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

Почему это произошло?

Извини я плохо знаю английский

6

Решение

NAN это особая константа. Он должен содержать некоторое значение, поэтому он содержит float тип данных

var_dump(NAN); // float(NAN);

Проблема в том, что filter_var не сравнивает типы данных, он ищет цифры, которые NAN не является.

Некоторые числовые операции могут привести к значению, представленному константой NAN. Этот результат представляет неопределенное или непредставимое значение в вычислениях с плавающей запятой. Любое свободное или строгое сравнение этого значения с любым другим значением, в том числе и с самим собой, будет иметь результат FALSE.

Поскольку NAN представляет любое количество различных значений, NAN не следует сравнивать с другими значениями, включая себя, и вместо этого следует проверять на использование is_nan ().

3

Другие решения

NAN — это ненулевое значение с плавающей точкой. Что такое NAN, это квадратный корень из (-1),

Так что теперь речь идет о комплексных числах. Квадратный корень (-1) является +i или же -i что означает, что NAN может иметь два значения. Так что если NAN должны были оценить -i или же false, NAN == false станет правдой вместо этого.

1

По вопросам рекламы [email protected]