在线文档教程
C++
应用 | Utilities

std::numeric_limits::has_denorm_loss

STD::数字[医]限制::[医]脱诺姆[医]损失

static const bool has_denorm_loss;(until C++11)
static constexpr bool has_denorm_loss;(since C++11)

价值std::numeric_limits<T>::has_denorm_loss是true适用于所有浮点类型。T当将低于正常值的数字创建为非正态化损失时,而不是作为不精确的结果%28(见%29以下)时,将检测精度损失。

标准专业化

Tvalue of std::numeric_limits::has_denorm_loss
/* non-specialized */false
boolfalse
charfalse
signed charfalse
unsigned charfalse
wchar_tfalse
char16_tfalse
char32_tfalse
shortfalse
unsigned shortfalse
intfalse
unsigned intfalse
longfalse
unsigned longfalse
long longfalse
unsigned long longfalse
floatimplementation-defined
doubleimplementation-defined
long doubleimplementation-defined

注记

标准兼容的ieee 754浮点实现要求低于正常值的数字,以检测与创建该数字相关的准确性损失(如果发生这种情况),并且可以使用以下两种不同的方式之一:

1%29非正态化损失:交付的结果与指数范围无界时的计算结果不同。

2%~29不精确结果:所给出的结果与指数范围和精度无界的计算结果不同。

不存在去正态化丢失机制的实现,在舍入后检测到28%的精度损失,不精确结果%29,并且在IEEESTD 754的2008修订版中删除了此选项。

libstdc++、libc++、libCstd和stlport 4为所有浮点类型定义了这个常量为false。MicrosoftVisualStudio将其定义为所有浮点类型的真。

与任何浮点计算一样,精度损失可能会增加。FE_INEXACT...

另见

tinyness_before staticidentifies floating-point types that detect tinyness before rounding (public static member constant)
has_denorm staticidentifies the denormalization style used by the floating-point type (public static member constant)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/type/NUMERIC[医]限制/有[医]脱诺姆[医]损失