Namespaces
Variants

std::numeric_limits<T>:: has_denorm_loss

From cppreference.net
Utilities library
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 의 값은 true 입니다. 이는 모든 부동소수점 타입 T 에 대해, 서브노멀 숫자를 생성할 때 정밀도 손실을 부정확한 결과가 아닌 비정규화 손실로 감지하는 경우에 해당합니다 (아래 참조).

목차

표준 특수화

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 (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 부동소수점 구현에서는 서브노멀 숫자의 생성과 관련된 정밀도 손실이 발생할 경우 이를 감지해야 하며, 다음 두 가지 방식 중 하나로 이를 수행할 수 있습니다:

  1. 비정규화 손실(Denormalization loss): 제공된 결과가 지수 범위가 무한정이었을 경우 계산되었을 결과와 다릅니다.
  2. 부정확한 결과(Inexact result): 제공된 결과가 지수 범위와 정밀도가 모두 무한정이었을 경우 계산되었을 결과와 다릅니다.

비정규화 손실 메커니즘의 구현이 존재하지 않으며 (부정확한 결과로 인해 반올림 후 정밀도 손실이 감지됨), 이 옵션은 IEEE Std 754의 2008년 개정판에서 제거되었습니다.

libstdc++, libc++, libCstd, stlport4는 모든 부동 소수점 타입에 대해 이 상수를 false 로 정의합니다. Microsoft Visual Studio는 모든 부동 소수점 타입에 대해 true 로 정의합니다.

모든 부동 소수점 연산과 마찬가지로, 정확도 손실이 발생하면 FE_INEXACT 가 발생할 수 있습니다.

예제

참고 항목

부동소수점 타입이 반올림 전에 아주 작은 값을 감지하는지 식별합니다
(public static member constant)
[static]
부동소수점 타입이 사용하는 비정규화 스타일을 식별합니다
(public static member constant)