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以下)时,将检测精度损失。
标准专业化
T | value of std::numeric_limits |
---|---|
/* non-specialized */ | false |
bool | false |
char | false |
signed char | false |
unsigned char | false |
wchar_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 | implementation-defined |
double | implementation-defined |
long double | implementation-defined |
注记
标准兼容的ieee 754浮点实现要求低于正常值的数字,以检测与创建该数字相关的准确性损失(如果发生这种情况),并且可以使用以下两种不同的方式之一:
1%29非正态化损失:交付的结果与指数范围无界时的计算结果不同。
2%~29不精确结果:所给出的结果与指数范围和精度无界的计算结果不同。
不存在去正态化丢失机制的实现,在舍入后检测到28%的精度损失,不精确结果%29,并且在IEEESTD 754的2008修订版中删除了此选项。
libstdc++、libc++、libCstd和stlport 4为所有浮点类型定义了这个常量为false。MicrosoftVisualStudio将其定义为所有浮点类型的真。
与任何浮点计算一样,精度损失可能会增加。FE_INEXACT
...
例
另见
tinyness_before static | identifies floating-point types that detect tinyness before rounding (public static member constant) |
---|---|
has_denorm static | identifies 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[医]限制/有[医]脱诺姆[医]损失