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
转换为对应的静默 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
。
|
返回十进制浮点值的函数当且仅当实现预定义了
|
(since C23) |
目录 |
参数
| arg | - | 标识 NaN 内容的窄字符串 |
返回值
与标识字符串
arg
对应的静默 NaN 值,若实现不支持静默 NaN 则返回零。
如果实现支持 IEEE 浮点算术(IEC 60559),则它也支持静默 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 标准 (ISO/IEC 9899:2018):
-
- 7.12.11.2 nan 函数 (p: 186-187)
-
- F.10.8.2 nan 函数 (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函数(第237页)
-
- F.9.8.2 fabs函数(第465页)
参考
|
(C99)
|
检查给定数值是否为非数值(NaN)
(函数宏) |
|
(C99)
|
生成
float
类型的静默非数值
(宏常量) |
|
C++ 文档
关于
nanf
,
nan
,
nanl
|
|