CppDS.com

C++ 98 11 14 17 20 手册

std::numeric_limits<T>::has_denorm_loss

来自cppreference.com
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等字符串转换
(C++17)
(C++17)
 
类型支持
基本类型
基础类型
定宽整数类型 (C++11)
数值极限
C 数值极限接口
运行时类型信息
类型特性
类型类别
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
类型属性
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(C++20 前)
(C++11)(C++20 中弃用)
(C++11)
类型特性常量
元函数
(C++17)
常量求值语境
受支持操作
关系与属性查询
类型修改
(C++11)(C++11)(C++11)
类型变换
(C++11)
(C++11)
(C++17)
(C++11)(C++20 前)(C++17)
 
 
static const bool has_denorm_loss;
(C++11 前)
static constexpr bool has_denorm_loss;
(C++11 起)

std::numeric_limits<T>::has_denorm_loss 的值对于所有检测在创建非正规数时的精度损失为非正规化损失,而非不准确结果(见后述)的浮点类型 Ttrue

标准特化

 
T std::numeric_limits<T>::has_denorm_loss 的值
/* non-specialized */ false
bool false
char false
signed char false
unsigned char false
wchar_t false
char8_t false
char16_t false
char32_t false
short false
unsigned short false
int false
unsigned int false
long false
unsigned long false
long long false
unsigned long long false
float 实现定义
double 实现定义
long double 实现定义

注意

与标准一致的非正规数的 IEEE 754 浮点实现要求检测关联到创建这种数的精度损失,若它出现,而且可以以二种迥异的方式进行:

1) 非正规化损失:产生的结果异于假如指数范围无界的情况下计算出的结果。
2) 不准确结果:产生的结果异于假如指数范围和精度均无界的情况下计算出的结果。

不存在非正规化损失机制的实现(精度损失在舍入后检测为不准确结果),而此选项在 IEEE 标准 754 的 2008 修订版被移除。

libstdc++ 、 libc++ 、 libCstd 及 stlport4 为所有浮点类型定义此常量为 false 。 Microsoft Visual Studio 为所有浮点类型定义它为 true

同任何浮点计算,精度损失可能引发 FE_INEXACT

示例

参阅

鉴别检测舍入前是否非正规的浮点类型
(公开静态成员常量)
[静态]
鉴别浮点类型所用的非正规风格
(公开静态成员常量)
关闭