Namespaces
Variants

std:: nan, std:: nanf, std:: nanl

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
Definido en el encabezado <cmath>
float nanf ( const char * arg ) ;
(1) (desde C++11)
double nan ( const char * arg ) ;
(2) (desde C++11)
long double nanl ( const char * arg ) ;
(3) (desde C++11)

Convierte la cadena de caracteres arg en el valor NaN silencioso correspondiente, como si se llamara a std::strtof , std::strtod , o std::strtold , respectivamente.

1) La llamada std :: nanf ( " n-char-sequence ") , donde n-char-sequence es una secuencia de dígitos, letras ASCII y guiones bajos, es equivalente a la llamada std:: strtof ( "NAN( n-char-sequence ) " , ( char ** ) nullptr ) ; .
La llamada std :: nanf ( "" ) es equivalente a la llamada std:: strtof ( "NAN()" , ( char ** ) nullptr ) ; .
La llamada std :: nanf ( " string ") , donde string no es ni una n-char-sequence ni una cadena vacía, es equivalente a la llamada std:: strtof ( "NAN" , ( char ** ) nullptr ) ; .
2) Igual que (1) , pero llama a std::strtod en lugar de std::strtof .
3) Igual que (1) , pero llama a std::strtold en lugar de std::strtof .

Contenidos

Parámetros

arg - cadena de caracteres estrecha que identifica el contenido de un NaN

Valor de retorno

El valor NaN silencioso que corresponde a la cadena identificadora arg o cero si la implementación no admite NaN silenciosos.

Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559), también soporta NaNs silenciosos.

Manejo de errores

Esta función no está sujeta a ninguna de las condiciones de error especificadas en math_errhandling .

Ejemplo

#include <cmath>
#include <cstdint>
#include <cstring>
#include <iostream>
int main()
{
    double f1 = std::nan("1");
    std::uint64_t f1n; std::memcpy(&f1n, &f1, sizeof f1);
    std::cout << "nan(\"1\") = " << f1 << " (" << std::hex << f1n << ")\n";
    double f2 = std::nan("2");
    std::uint64_t f2n; std::memcpy(&f2n, &f2, sizeof f2);
    std::cout << "nan(\"2\") = " << f2 << " (" << std::hex << f2n << ")\n";
}

Salida posible:

nan("1") = nan (7ff0000000000001)
nan("2") = nan (7ff0000000000002)

Véase también

(C++11)
comprueba si el número dado es NaN
(función)
(C++11)
se evalúa como un NaN silencioso de tipo float
(constante macro)
identifica tipos de punto flotante que pueden representar el valor especial "not-a-number silencioso" (NaN)
(constante miembro pública estática de std::numeric_limits<T> )
identifica tipos de punto flotante que pueden representar el valor especial "not-a-number señalizador" (NaN)
(constante miembro pública estática de std::numeric_limits<T> )
[static]
devuelve un valor NaN silencioso del tipo de punto flotante dado
(función miembro pública estática de std::numeric_limits<T> )
devuelve un valor NaN señalizador del tipo de punto flotante dado
(función miembro pública estática de std::numeric_limits<T> )
Documentación C para nanf , nan , nanl