nan, nanf, nanl, nand32, nand64, nand128
来自cppreference.com
在标头 <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 值,分别如同以下列方式调用 strtod、strtof 或 strtold:
- 调用 nan("n-字符序列"),其中 n-字符序列 是数字、拉丁字母和下划线的序列,等价于调用 /*strtoX*/("NAN(n-字符序列)", (char**)NULL);。
- 调用 nan("") 等价于调用 /*strtoX*/("NAN()", (char**)NULL);。
- 调用 nan("字符串"),其中 字符串 既非 n-字符序列 亦非空字符串,等价于调用 /*strtoX*/("NAN", (char**)NULL);。
1) 解析函数为 strtof。
2) 解析函数为 strtod。
3) 解析函数为 strtold。
4) 解析函数为 strtod32。
5) 解析函数为 strtod64。
6) 解析函数为 strtod128。
当且仅当实现预定义了 |
(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 The nan functions (第 186-187 页)
- F.10.8.2 The nan functions (第 386 页)
- C11 标准(ISO/IEC 9899:2011):
- 7.12.11.2 The nan functions (第 256 页)
- F.10.8.2 The nan functions (第 529 页)
- C99 标准(ISO/IEC 9899:1999):
- 7.12.11.2 The nan functions (第 237 页)
- F.9.8.2 The fabs functions (第 465 页)
[编辑] 参阅
(C99) |
检查给定数是否为 NaN (宏函数) |
(C99) |
求值为 float 类型的安静 NaN (宏常量) |
nanf, nan, nanl 的 C++ 文档
|