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
定義先ヘッダ <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 を対応するquiet 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 ) ; と等価です。
2) (1) と同じですが、 std::strtof の代わりに std::strtod を呼び出します。
3) (1) と同じですが、 std::strtof の代わりに std::strtold を呼び出します。

目次

パラメータ

arg - NaNの内容を識別するナロウ文字列

戻り値

識別文字列 arg に対応するquiet NaN値、または実装がquiet NaNをサポートしていない場合はゼロ。

実装がIEEE浮動小数点演算(IEC 60559)をサポートしている場合、quiet 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)
float 型のquiet NaNに評価される
(マクロ定数)
特殊値「quiet not-a-number」(NaN)を表現できる浮動小数点型を識別する
( std::numeric_limits<T> のpublic staticメンバ定数)
特殊値「signaling not-a-number」(NaN)を表現できる浮動小数点型を識別する
( std::numeric_limits<T> のpublic staticメンバ定数)
[static]
指定された浮動小数点型のquiet NaN値を返す
( std::numeric_limits<T> のpublic staticメンバ関数)
指定された浮動小数点型のsignaling NaN値を返す
( std::numeric_limits<T> のpublic staticメンバ関数)
Cドキュメント for nanf , nan , nanl