Skip to content

En C++98, los identificadores inff, -inff y nanf están relacionados con valores especiales que pueden ser representados por el tipo de datos de punto flotante, como float.

  1. inff: Este identificador representa el infinito positivo. Es un valor especial que se utiliza para indicar que un resultado o un número es infinitamente grande en el sentido positivo.
cpp
float infinito_positivo = INFINITY;  // También se puede usar inff
  1. -inff: Este identificador representa el infinito negativo. Similar al caso anterior, se utiliza para indicar que un resultado o un número es infinitamente pequeño en el sentido negativo.
cpp
float infinito_negativo = -INFINITY;  // También se puede usar -inff
  1. nanf: Este identificador representa un "Not-a-Number" (no es un número). Se utiliza para representar resultados indefinidos o operaciones inválidas en el contexto de operaciones de punto flotante.
cpp
float not_a_number = NAN;  // También se puede usar nanf

Estos valores especiales son útiles en situaciones donde necesitas representar conceptos como resultados infinitos o situaciones en las que no se puede definir un valor numérico.

Las constantes -inf, +inf y nan pueden ser útiles para manejar valores de infinito o no númericos. La utilización de estas constantes es conveniente en diferentes situaciones:

  1. -inff (infinito negativo) y +inff (infinito positivo): Estas constantes pueden ser útiles cuando se trabaja con operaciones matemáticas que podrían generar un resultado infinito, como la división por cero. Por ejemplo, si deseas calcular el resultado de una división y sabes que al menos uno de los operandos es cero, puedes utilizar -inff o +inff para evitar errores en tiempo de ejecución.

  2. nanf (not a number): Esta constante se utiliza para representar un valor que no es un número válido. Por ejemplo, si se realiza una operación matemática que no tiene un resultado definido, como la raíz cuadrada de un número negativo, el resultado será nanf. Estas constantes pueden ser útiles en situaciones donde deseas manejar los errores de cálculo en lugar de simplemente abortar la ejecución del programa.

cpp
#include <iostream>
#include <cmath>
#include <limits>

int main() {
    // Dividir por cero para obtener un resultado infinito
    float div = 1.0f / 0.0f;
    std::cout << "div: " << div << "\n";

    // Usar nanf en lugar de una operación que no tiene resultado definido
    double raiz_cuadrada = std::sqrt(-1.0);
    std::cout << "raiz_cuadrada: " << raiz_cuadrada << "\n";

    // Comparar con infinito y nanf
    if (div == std::numeric_limits<float>::infinity()) {
        std::cout << "El resultado es infinito\n";
    } else if (div != div) {
        std::cout << "El resultado no es un número válido\n";
    }

    return 0;
}
output
bash
div: inf
raiz_cuadrada: nan
El resultado es infinito