std::nan, std::nanf, std::nanl
De cppreference.com
| Definido en el archivo de 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 simple (quiet) correspondiente, como si llamara a std::strtof, std::strtod o std ::strtold, respectivamente.
1) La llamada
std::nanf("secuencia-de-n-caracteres"), donde secuencia-de-n-caracteres es una secuencia de dígitos, letras ASCII y guiones bajos, es equivalente a la llamada std::strtof("NAN(secuencia-de-n-caracteres)", (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 secuencia-de-n-caracteres 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.Parámetros
| arg | - | Cadena de caracteres angostos que identifican el contenido de un NaN. |
Valor de retorno
El valor NaN simple que corresponde a la cadena de identificación arg o cero si la implementación no admite NaN simples.
Si la implementación admite la aritmética de punto flotante IEEE (IEC 60559), también admite NaN simples.
Manejo de errores
Esta función no está sujeta a ninguna de las condiciones de error especificadas en math_errhandling.
Ejemplo
Ejecuta este código
#include <iostream>
#include <cmath>
#include <cstdint>
#include <cstring>
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";
}
Posible salida:
nan("1") = nan (7ff0000000000001)
nan("2") = nan (7ff0000000000002)
