NaN en C++: ¿qué es y cómo comprobarlo?

NaN, acrónimo de Not a Number , es una excepción que suele ocurrir en los casos en que una expresión da como resultado un número que no está definido o no se puede representar . Se utiliza para operaciones de coma flotante. Por ejemplo:

  • La raíz cuadrada de los números negativos
  • División por cero
  • Tomando el registro de cero o un número negativo, etc.

CPP

// C++ code to demonstrate NaN exception
#include <cmath>
#include <iostream>
using namespace std;
 
// Driver Code
int main()
{
    float a = 2, b = -2;
 
    // Prints the number (1.41421)
    cout << sqrt(a) << endl;
 
    // Prints "nan" exception
    // sqrt(-2) is complex number
    cout << sqrt(b) << endl;
 
    return 0;
}
Producción

1.41421
-nan

¿Cómo comprobar NaN en C++?

Método 1: Usar el operador de comparación (“==”) . 

En este método comprobamos si un número es complejo comparándolo consigo mismo. Si el resultado es verdadero, entonces el número no es complejo, es decir, real. Pero si el resultado es falso, se devuelve «nan», es decir, el número es complejo.

CPP

// C++ code to check for NaN exception
// using "==" operator
#include <cmath>
#include <iostream>
using namespace std;
 
// Driver Code
int main()
{
    float a = sqrt(2);
    float b = sqrt(-2);
 
    // Returns true, a is real number
    // prints "Its a real number"
    a == a ? cout << "Its a real number" << endl
           : cout << "Its NaN" << endl;
 
    // Returns false, b is complex number
    // prints "Its nan"
    b == b ? cout << "Its a real number" << endl
           : cout << "Its NaN" << endl;
 
    return 0;
}
Producción

Its a real number
Its NaN

Método 2: Usar la función incorporada “isnan()”

Otra forma de verificar NaN es mediante el uso de la función «isnan()», esta función devuelve verdadero si un número es complejo; de lo contrario, devuelve falso. Esta función de biblioteca C está presente en el archivo de encabezado <cmath> .

CPP

// C++ code to check for NaN exception
// using "isnan()"
#include <cmath>
#include <iostream>
using namespace std;
 
// Driver Code
int main()
{
    float a = sqrt(2);
    float b = sqrt(-2);
 
    // Returns false as a
    // is real number
    isnan(a) ? cout << "Its NaN" << endl
             : cout << "Its a real number" << endl;
 
    // Returns true as b is NaN
    isnan(b) ? cout << "Its NaN" << endl
             : cout << "Its a real number" << endl;
 
    return 0;
}
Producción

Its a real number
Its NaN

Este artículo es una contribución de Manjeet Singh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *