std::nan, std::nanf, std::nanl
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <cmath> で定義
|
||
float nanf( const char* arg ); |
(C++11以上) | |
double nan( const char* arg ); |
(C++11以上) | |
long double nanl( const char* arg ); |
(C++11以上) | |
以下のように、それぞれ std::strtod、 std::strtof または std::strtold を呼んだかのように、処理系定義の文字列 arg を対応する quiet NaN の値に変換します。
呼び出し std::nan("n-char-sequence") は std::strtod("NAN(n-char-sequence)", (char**)nullptr); の呼び出しと同等です。 ただし n-char-sequence は数字、ラテン文字およびアンダースコアの並びです。
呼び出し std::nan("") は呼び出し std::strtod("NAN()", (char**)nullptr); と同等です。
呼び出し std::nan("string") は呼び出し std::strtod("NAN", (char**)nullptr); と同等です。 ただし string は n-char-sequence でも空文字列でもない文字列です。
引数
| arg | - | NaN の内容を表すナロー文字列 |
戻り値
識別文字列 arg に対応する quiet NaN の値、または処理系が quiet NaN をサポートしない場合はゼロ。
例
Run this code
#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";
}
出力例:
nan("1") = nan (7ff0000000000001)
nan("2") = nan (7ff0000000000002)
関連項目
(C++11) |
指定された数値が NaN かどうか調べます (関数) |
(C++11) |
float 型の quiet NaN に評価されるマクロ (マクロ定数) |
[静的] |
特殊な値「quiet NaN」を表現可能な浮動小数点型を識別します ( std::numeric_limits<T>のパブリック静的メンバ定数)
|
| 特殊な値「signaling NaN」を表現可能な浮動小数点型を識別します ( std::numeric_limits<T>のパブリック静的メンバ定数)
| |
[静的] |
指定された浮動小数点型の quiet NaN の値を返します ( std::numeric_limits<T>のパブリック静的メンバ関数)
|
[静的] |
指定された浮動小数点型の signaling NaN の値を返します ( std::numeric_limits<T>のパブリック静的メンバ関数)
|
nanf, nan, nanl の C言語リファレンス
| |