nan, nanf, nanl, nand32, nand64, nand128
来自cppreference.com
在标头 <math.h> 定义 | ||
float nanf(constchar* arg ); | (1) | (C99 起) |
double nan(constchar* arg ); | (2) | (C99 起) |
longdouble nanl(constchar* arg ); | (3) | (C99 起) |
_Decimal32 nand32(constchar* arg ); | (4) | (C23 起) |
_Decimal64 nand64(constchar* arg ); | (5) | (C23 起) |
_Decimal128 nand128(constchar* 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++ 文档 |