is_nan

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

is_nanVerifica si un número flotante es NAN

Descripción

is_nan(float $num): bool

Devuelve si el num dado es NAN (Not A Number).

NAN es devuelto por las operaciones matemáticas que no están definidas, por ejemplo al pasar argumentos fuera del dominio de entrada de la función. La raíz cuadrada (sqrt()) solo está definida para números positivos, el paso de un número negativo resultará en un NAN. Otros ejemplos de operaciones que devuelven NAN son la división de INF por INF y cualquier operación que involucre un valor NAN existente.

Nota:

A pesar de su nombre Not A Number, NAN es un valor válido de tipo número decimal.

Precaución

NAN no se compara igual a NAN. Para verificar si un número flotante es NAN, is_nan() debe ser utilizado. La verificación de $float === NAN no funcionará.

Parámetros

num

El número decimal a verificar

Valores devueltos

true si num es NAN, de lo contrario false.

Ejemplos

Ejemplo #1 Ejemplo con is_nan()

<?php
$nan
= sqrt(-1);

var_dump($nan, is_nan($nan));
?>

El ejemplo anterior mostrará :

float(NAN)
bool(true)

Ver también

  • is_finite() - Verifica si un número flotante es finito
  • is_infinite() - Verifica si un número de tipo float es infinito

add a note

User Contributed Notes 4 notes

up
25
darkangel at moveinmod dot net
19 years ago
nan/"not a number" is not meant to see if the data type is numeric/textual/etc..

NaN is actually a set of values which can be stored in floating-point variables, but dont actually evaluate to a proper floating point number.

The floating point system has three sections: 1 bit for the sign (+/-), an 8 bit exponent, and a 23 bit fractional part.
There are rules governing which combinations of values can be placed into each section, and some values are reserved for numbers such as infinity. This leads to certain combinations being invalid, or in other words, not a number.
up
14
10basetom
10 years ago
I would use is_numeric() instead of ctype_digit() if you cannot be 100% sure what data type the string will be. Example from the docs:

<?php
$numeric_string
= '42';
$integer = 42;

ctype_digit($numeric_string); // true
ctype_digit($integer); // false (ASCII 42 is the * character)

is_numeric($numeric_string); // true
is_numeric($integer); // true
?>
up
3
ScorpioT1000
5 years ago
function is_nan2($n) {
return $n !== $n;
}

is_nan2(NAN); // true
up
1
php at darkain dot com
9 years ago
Starting with PHP 7, the string 'NaN' evaluates to the NaN value as well.

Example:
var_dump( (float) 'NaN' );

PHP 5.x and HHVM:
float(0)

PHP 7.0:
float(NAN)
To Top