Namespaces
Variants

std:: numeric_limits

From cppreference.net
Utilities library
헤더 파일에 정의됨 <limits>
template < class T > class numeric_limits ;

std::numeric_limits 클래스 템플릿은 산술 타입의 다양한 속성을 조회하기 위한 표준화된 방법을 제공합니다 (예: int 타입의 가능한 최댓값은 std :: numeric_limits < int > :: max ( ) ).

이 정보는 std::numeric_limits 템플릿의 특수화를 통해 제공됩니다. 표준 라이브러리 는 모든 산술 타입에 대한 특수화를 사용 가능하게 합니다 (cv-unqualified 산술 타입에 대한 특수화만 목록으로 표시):

헤더 파일에 정의됨 <limits>
template <> class numeric_limits < bool > ;
template <> class numeric_limits < char > ;
template <> class numeric_limits < signed char > ;
template <> class numeric_limits < unsigned char > ;
template <> class numeric_limits < wchar_t > ;
template <> class numeric_limits < char8_t > ;
(C++20부터)
template <> class numeric_limits < char16_t > ;
(C++11부터)
template <> class numeric_limits < char32_t > ;
(C++11부터)
template <> class numeric_limits < short > ;
template <> class numeric_limits < unsigned short > ;
template <> class numeric_limits < int > ;
template <> class numeric_limits < unsigned int > ;
template <> class numeric_limits < long > ;
template <> class numeric_limits < unsigned long > ;
template <> class numeric_limits < long long > ;
(C++11부터)
template <> class numeric_limits < unsigned long long > ;
(C++11 이후)
template <> class numeric_limits < float > ;
template <> class numeric_limits < double > ;
template <> class numeric_limits < long double > ;

cv 한정자 타입 cv T 에 대한 std::numeric_limits 특수화의 각 멤버 값은 비한정 타입 T 에 대한 특수화의 해당 멤버 값과 동일합니다. 예를 들어, std :: numeric_limits < int > :: digits std :: numeric_limits < const int > :: digits 와 같습니다.

산술 타입의 별칭들(예: std::size_t 또는 std::streamsize ) 또한 std::numeric_limits 타입 특성으로 검사할 수 있습니다.

산술적이지 않은 표준 타입들, 예를 들어 std:: complex < T > 또는 std::nullptr_t 는 특수화를 가지고 있지 않습니다.

구현체가 정수형 타입 을 정의하는 경우, std::numeric_limits 의 특수화도 해당 타입에 대해 제공되어야 합니다.

(C++20부터)

구현체들은 구현별 타입에 대해 std::numeric_limits 의 특수화를 제공할 수 있습니다: 예를 들어 GCC는 std::numeric_limits<__int128> 을 제공합니다. 비표준 라이브러리들은 라이브러리 제공 타입에 대해 특수화를 추가 할 수 있으며, 예를 들어 OpenEXR 은 16비트 부동소수점 타입을 위한 std::numeric_limits<half> 를 제공합니다.

목차

템플릿 매개변수

T - 수치 속성을 검색할 타입

멤버 상수

std::numeric_limits 가 특수화된 타입들을 식별함
(public static member constant)
[static]
부호 있는 타입을 식별함
(public static member constant)
[static]
정수형 타입을 식별함
(public static member constant)
[static]
정확한 타입을 식별합니다
(public static member constant)
"양의 무한대" 특수 값을 표현할 수 있는 부동소수점 타입을 식별함
(public static member constant)
부동 소수점 타입이 특수 값 "quiet not-a-number"(NaN)을 표현할 수 있는지 식별합니다
(public static member constant)
부동소수점 타입이 특수 값 "신호 전달 NaN(Not-a-Number)"을 표현할 수 있는지 식별합니다
(public static member constant)
[static]
부동소수점 타입이 사용하는 비정규화(denormalization) 스타일을 식별합니다
(public static member constant)
정밀도 손실을 부정확한 결과가 아닌 비정규화 손실로 감지하는 부동소수점 타입을 식별합니다
(public static member constant)
[static]
해당 타입이 사용하는 반올림 스타일을 식별합니다
(public static member constant)
[static]
IEC 559/IEEE 754 부동소수점 타입을 식별합니다
(public static member constant)
[static]
유한한 값들의 집합을 나타내는 타입들을 식별합니다
(public static member constant)
[static]
모듈로 연산으로 오버플로우를 처리하는 타입을 식별합니다
(public static member constant)
[static]
변경 없이 표현 가능한 radix 자릿수
(public static member constant)
[static]
변경 없이 표현할 수 있는 십진수 자릿수
(public static member constant)
[static] (C++11)
이 타입의 모든 값을 구별하는 데 필요한 십진수 자릿수
(public static member constant)
[static]
주어진 타입의 표현에 사용되는 기수 또는 정수 베이스
(public static member constant)
기수의 유효한 정규화된 부동 소수점 값인 가장 작은 음의 거듭제곱보다 1 더 큰 값
(public static member constant)
유효한 정규화된 부동소수점 값인 10의 가장 작은 음의 지수
(public static member constant)
유효한 유한 부동소수점 값인 기수의 가장 큰 정수 거듭제곱보다 1 큰 값
(public static member constant)
유효한 유한 부동소수점 값인 10의 가장 큰 정수 거듭제곱
(public static member constant)
[static]
산술 연산이 트랩(trap)을 발생시킬 수 있는 타입들을 식별합니다
(public static member constant)
반올림 전에 아주 작은 값을 감지하는 부동소수점 타입을 식별합니다
(public static member constant)

멤버 함수

[static]
주어진 비부동소수점 타입의 가장 작은 유한값, 또는 주어진 부동소수점 타입의 가장 작은 양의 정규값을 반환합니다
(public static member function)
[static] (C++11)
주어진 타입의 가장 낮은 유한값을 반환합니다. 즉, 부호 있는 타입의 경우 가장 음의 값, 0 부호 없는 타입의 경우 0입니다
(public static member function)
[static]
주어진 타입의 가장 큰 유한값을 반환합니다
(public static member function)
[static]
1.0 과 주어진 부동소수점 타입의 다음 표현 가능한 값 사이의 차이를 반환합니다
(public static member function)
[static]
주어진 부동소수점 타입의 최대 반올림 오차를 반환합니다
(public static member function)
[static]
주어진 부동소수점 타입의 양의 무한대 값을 반환합니다
(public static member function)
[static]
주어진 부동소수점 타입의 quiet NaN 값을 반환합니다
(public static member function)
주어진 부동소수점 타입의 signaling NaN 값을 반환합니다
(public static member function)
[static]
주어진 부동소수점 타입의 가장 작은 양의 비정규값을 반환합니다
(public static member function)

헬퍼 클래스

부동소수점 반올림 모드를 나타냄
(enum)
부동소수점 비정규화 모드를 나타냄
(enum)

C 라이브러리 매크로 상수와의 관계

**번역 결과:** - HTML 태그와 속성은 그대로 유지됨 - ` `, `
`, `` 태그 내부 텍스트는 번역되지 않음 (해당 태그는 없지만 동일한 원칙 적용)
- C++ 관련 용어(bool, false, true)는 번역되지 않음
- 숫자 값(2)은 그대로 유지됨
- 모든 형식과 구조가 원본과 동일하게 보존됨
이 HTML 테이블 행은 C++ 코드 조각을 나타내며, bool 타입과 해당 값들(false, false, true) 그리고 숫자 값 2를 표시하고 있습니다.
특수화
std::numeric_limits<T>
여기서 T
멤버
min() lowest()
(C++11)
max() radix
bool false false true 2
char CHAR_MIN CHAR_MIN CHAR_MAX 2
signed char SCHAR_MIN SCHAR_MIN SCHAR_MAX 2
unsigned char 0 0 UCHAR_MAX 2
wchar_t WCHAR_MIN WCHAR_MIN WCHAR_MAX 2
char8_t 0 0 UCHAR_MAX 2
char16_t 0 0 UINT_LEAST16_MAX 2
char32_t 0 0 UINT_LEAST32_MAX 2
short SHRT_MIN SHRT_MIN SHRT_MAX 2
signed short
unsigned short 0 0 USHRT_MAX 2
int INT_MIN INT_MIN INT_MAX 2
signed int
unsigned int 0 0 UINT_MAX 2
long LONG_MIN LONG_MIN LONG_MAX 2
signed long
unsigned long 0 0 ULONG_MAX 2
long long LLONG_MIN LLONG_MIN LLONG_MAX 2
signed long long
unsigned long long 0 0 ULLONG_MAX 2
전문화
std::numeric_limits<T>
여기서 T
멤버
denorm_min() min() lowest()
(C++11)
max() epsilon() digits digits10
float FLT_TRUE_MIN FLT_MIN - FLT_MAX FLT_MAX FLT_EPSILON FLT_MANT_DIG FLT_DIG
double DBL_TRUE_MIN DBL_MIN - DBL_MAX DBL_MAX DBL_EPSILON DBL_MANT_DIG DBL_DIG
long double LDBL_TRUE_MIN LDBL_MIN - LDBL_MAX LDBL_MAX LDBL_EPSILON LDBL_MANT_DIG LDBL_DIG
특수화
std::numeric_limits<T>
여기서 T
멤버 (계속)
min_exponent min_exponent10 max_exponent max_exponent10 radix
float FLT_MIN_EXP FLT_MIN_10_EXP FLT_MAX_EXP FLT_MAX_10_EXP FLT_RADIX
double DBL_MIN_EXP DBL_MIN_10_EXP DBL_MAX_EXP DBL_MAX_10_EXP FLT_RADIX
long double LDBL_MIN_EXP LDBL_MIN_10_EXP LDBL_MAX_EXP LDBL_MAX_10_EXP FLT_RADIX

예제

#include <iostream>
#include <limits>
int main() 
{
    std::cout << "type\t│ lowest()\t│ min()\t\t│ max()\n"
              << "bool\t│ "
              << std::numeric_limits<bool>::lowest() << "\t\t│ "
              << std::numeric_limits<bool>::min() << "\t\t│ "
              << std::numeric_limits<bool>::max() << '\n'
              << "uchar\t│ "
              << +std::numeric_limits<unsigned char>::lowest() << "\t\t│ "
              << +std::numeric_limits<unsigned char>::min() << "\t\t│ "
              << +std::numeric_limits<unsigned char>::max() << '\n'
              << "int\t│ "
              << std::numeric_limits<int>::lowest() << "\t│ "
              << std::numeric_limits<int>::min() << "\t│ "
              << std::numeric_limits<int>::max() << '\n'
              << "float\t│ "
              << std::numeric_limits<float>::lowest() << "\t│ "
              << std::numeric_limits<float>::min() << "\t│ "
              << std::numeric_limits<float>::max() << '\n'
              << "double\t│ "
              << std::numeric_limits<double>::lowest() << "\t│ "
              << std::numeric_limits<double>::min() << "\t│ "
              << std::numeric_limits<double>::max() << '\n';
}

가능한 출력:

type	│ lowest()	│ min()		│ max()
bool	│ 0		│ 0		│ 1
uchar	│ 0		│ 0		│ 255
int	│ -2147483648	│ -2147483648	│ 2147483647
float	│ -3.40282e+38	│ 1.17549e-38	│ 3.40282e+38
double	│ -1.79769e+308	│ 2.22507e-308	│ 1.79769e+308

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 201 C++98 모든 기본 타입에 대한 특수화가 제공되어야 함 비-산술 타입은 제외됨
LWG 559 C++98 cv-한정 타입에 대한 std::numeric_limits
특수화가 cv-비한정 타입에 대한 해당 특수화와
동일하게 동작하는지 불분명했음
동일한
동작을 가짐

참고 항목