nan, nanf, nanl, nand32, nand64, nand128
From cppreference.net
Common mathematical functions
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ヘッダーで定義
<math.h>
|
||
|
float
nanf
(
const
char
*
arg
)
;
|
(1) | (C99以降) |
|
double
nan
(
const
char
*
arg
)
;
|
(2) | (C99以降) |
|
long
double
nanl
(
const
char
*
arg
)
;
|
(3) | (C99以降) |
|
_Decimal32 nand32
(
const
char
*
arg
)
;
|
(4) | (C23以降) |
|
_Decimal64 nand64
(
const
char
*
arg
)
;
|
(5) | (C23以降) |
|
_Decimal128 nand128
(
const
char
*
arg
)
;
|
(6) | (C23以降) |
実装定義の文字列
arg
を対応するquiet NaN値に変換します。これは、適切な解析関数
strtoX
を呼び出す場合と同様に行われます:
- 呼び出し nan ( "n-char-sequence" ) は、 n-char-sequence が数字、ラテン文字、アンダースコアのシーケンスである場合、呼び出し /*strtoX*/ ( "NAN(n-char-sequence)" , ( char ** ) NULL ) ; と等価です。
- 呼び出し nan ( "" ) は、呼び出し /*strtoX*/ ( "NAN()" , ( char ** ) NULL ) ; と等価です。
- 呼び出し nan ( "string" ) は、 string が n-char-sequence でも空文字列でもない場合、呼び出し /*strtoX*/ ( "NAN" , ( char ** ) NULL ) ; と等価です。
1)
解析関数は
strtof
です。
2)
解析関数は
strtod
です。
3)
解析関数は
strtold
です。
4)
解析関数は
strtod32
です。
5)
解析関数は
strtod64
です。
6)
解析関数は
strtod128
です。
|
10進浮動小数点値を返す関数は、実装が
|
(C23以降) |
目次 |
パラメータ
| arg | - | NaNの内容を識別するナロウ文字列 |
戻り値
識別文字列
arg
に対応するquiet NaN値、または実装がquiet NaNをサポートしていない場合はゼロ。
実装がIEEE浮動小数点演算(IEC 60559)をサポートしている場合、quiet NaNもサポートします。
エラー処理
この関数は、 math_errhandling で指定されているいかなるエラー条件の対象にもなりません。
例
このコードを実行
#include <stdio.h> #include <math.h> #include <stdint.h> #include <inttypes.h> #include <string.h> int main(void) { double f1 = nan("1"); uint64_t f1n; memcpy(&f1n, &f1, sizeof f1); printf("nan(\"1\") = %f (%" PRIx64 ")\n", f1, f1n); double f2 = nan("2"); uint64_t f2n; memcpy(&f2n, &f2, sizeof f2); printf("nan(\"2\") = %f (%" PRIx64 ")\n", f2, f2n); double f3 = nan("0xF"); uint64_t f3n; memcpy(&f3n, &f3, sizeof f3); printf("nan(\"0xF\") = %f (%" PRIx64 ")\n", f3, f3n); }
出力例:
nan("1") = nan (7ff8000000000001)
nan("2") = nan (7ff8000000000002)
nan("0xF") = nan (7ff800000000000f)
参考文献
- C17 standard (ISO/IEC 9899:2018):
-
- 7.12.11.2 The nan functions (p: 186-187)
-
- F.10.8.2 The nan functions (p: 386)
- C11規格 (ISO/IEC 9899:2011):
-
- 7.12.11.2 nan関数群 (p: 256)
-
- F.10.8.2 nan関数群 (p: 529)
- C99規格 (ISO/IEC 9899:1999):
-
- 7.12.11.2 nan関数群 (p: 237)
-
- F.9.8.2 fabs関数群 (p: 465)
関連項目
|
(C99)
|
指定された数値がNaNであるかどうかをチェックする
(関数マクロ) |
|
(C99)
|
float
型のquiet NaNに評価される
(マクロ定数) |
|
C++ documentation
for
nanf
,
nan
,
nanl
|
|