C++ 浮点数与文档生成工具详解
1. 浮点数特殊值与类型
在 C++ 中,IEC 60559 标准为特殊值保留了一些位模式。
- 无穷大(Infinity) :当指数位全为 1,尾数全为 0 时,该值被视为“无穷大”。它并非严格的数学无穷大,但尽力模拟。例如,任何有限值与无穷大相加,结果仍为无穷大。正无穷大总是大于任何有限值,负无穷大总是小于有限值。
- 非数(NaN) :当指数位全为 1,尾数不全为 0 时,该值被视为非数(NaN)。NaN 分为两种:安静 NaN(quiet NaN)和信号 NaN(signaling NaN)。与安静 NaN 进行算术运算总是得到 NaN 结果;使用信号 NaN 会导致机器中断,程序的具体表现取决于实现,通常程序会突然终止,具体细节可查阅编译器文档。某些无意义的算术运算,如正无穷大与负无穷大相加,也会产生 NaN。可以通过调用 <cmath> 中声明的 std::isnan 来测试一个值是否为 NaN,还有类似的函数可用于测试无穷大及浮点数的其他属性。
浮点数类型有多种,不同类型的结构和表示范围有所不同:
| 类型 | 位数 | 尾数位数 | 指数位数 | 符号位 |
| ---- | ---- | ---- | ---- | ---- |
| float | 32 | 23 | 8 | 1 |
| double(IEC 60559 binary64) | 64 | 52 | 11 | 1 |
| long double | 至少 79(常见 8
超级会员免费看
订阅专栏 解锁全文
49

被折叠的 条评论
为什么被折叠?



