std::numeric_limits<T>::has_denorm_loss
< cpp | types | numeric limits
|
static const bool has_denorm_loss;
|
(C++11 前) | |
|
static constexpr bool has_denorm_loss;
|
(C++11 起) (C++23 中弃用) |
|
std::numeric_limits<T>::has_denorm_loss 的值对于所有将在创建非正规数时的精度的损失检测为非正规化损失而非不准确结果(见后述)的浮点类型 T 都是 true。
标准特化
T |
std::numeric_limits<T>::has_denorm_loss 的值 |
| /* 未特化 */ | false |
| bool | false |
| char | false |
| signed char | false |
| unsigned char | false |
| wchar_t | false |
| char8_t (C++20 起) | false |
| char16_t (C++11 起) | false |
| char32_t (C++11 起) | false |
| short | false |
| unsigned short | false |
| int | false |
| unsigned int | false |
| long | false |
| unsigned long | false |
| long long (C++11 起) | false |
| unsigned long long (C++11 起) | false |
| float | 由实现定义 |
| double | 由实现定义 |
| long double | 由实现定义 |
注解
遵从标准的非正规数的 IEEE 754 浮点实现要求在出现关联到创建这种数的精度损失时检测它,而且可以以两种不同的方式进行:
- 非正规化损失:产生的结果与在假定指数范围无界的情况下计算出的结果不同。
- 不准确结果:产生的结果与在假定指数范围和精度均无界的情况下计算出的结果不同。
不存在非正规化损失机制的实现(精度损失在舍入后检测为不准确结果),而此选项在 IEEE 标准 754 的 2008 修订版被移除。
libstdc++、libc++、libCstd 及 stlport4 为所有浮点类型定义此常量为 false。Microsoft Visual Studio 为所有浮点类型定义它为 true。
与任何浮点计算一样,精度损失可能会引发 FE_INEXACT。
示例
| 本节未完成 原因:暂无示例 |
参阅
|
[静态]
|
鉴别检测舍入前是否非正规的浮点类型 (公开静态成员常量) |
|
[静态]
|
鉴别浮点类型所用的非正规风格 (公开静态成员常量) |