std::nan, std::nanf, std::nanl
Определено в заголовке <cmath> |
||
|---|---|---|
float nanf( const char* arg ); |
(1) | (с C++11) |
double nan ( const char* arg ); |
(2) | (с C++11) |
long double nanl( const char* arg ); |
(3) | (с C++11) |
Преобразует строку символов arg в соответствующее значение тихой NaN, как если бы вызывались std::strtof, std::strtod, или std::strtold, соответственно.
1) Вызов
std::nanf("n-char-sequence"), где n-char-sequence — последовательность цифр, ASCII-символов и символов подчеркивания, эквивалентен вызову std::strtof("NAN(n-char-sequence)", (char**)nullptr);.
Вызов
std::nanf("") эквивалентен вызову std::strtof("NAN()", (char**)nullptr);.
Вызов
std::nanf("string"), где string ни есть n-char-sequence, ни пустая строка, эквивалентен вызову std::strtof("NAN", (char**)nullptr);.
Параметры
| arg | - | строка символов, определяющая содержимое NaN |
Возвращаемое значение
Значение тихой NaN, соответствующее идентифицирующей строке arg, или ноль, если реализация не поддерживает тихие NaN.
Если реализация поддерживает IEEE арифметику с плавающей точкой (IEC 60559), она также поддерживает тихие NaN.
Обработка ошибок
Данная функция не подвержена никаким из условий ошибок, указанных в math_errhandling.
Пример
#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";
}Возможный вывод:
nan("1") = nan (7ff0000000000001)
nan("2") = nan (7ff0000000000002)См. также
|
(C++11) |
проверяет, является ли заданное число NaN (функция) |
|
(C++11) |
вычисляет тихую NaN типа float (макроконстанта) |
|
[static] |
определяет типы с плавающей точкой, которые могут представлять специальное значение "тихая не число" (NaN) (общедоступная статическая константа std::numeric_limits<T>) |
|
[static] |
определяет типы с плавающей точкой, которые могут представлять специальное значение "сигнализирующее не число" (NaN) (общедоступная статическая константа std::numeric_limits<T>) |
|
[static] |
возвращает значение тихой NaN заданного типа с плавающей точкой (общедоступная статическая функция std::numeric_limits<T>) |
|
[static] |
возвращает значение сигнализирующей NaN заданного типа с плавающей точкой (общедоступная статическая функция std::numeric_limits<T>) |
C документация для nanf, nan, nanl |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/math/nan