들어가면서
1.std::numeric_limits 템플릿 클래스는 C++의 표준라이브러리에서 제공하는 클래스다.
2.해당 클래스는 수치 타입에 대한 속성을 제공한다. 동적으로 제공 받은 속성은 수치계산, 메모리 할당 등과 같은 작업에 유용하게 사용된다.
정규화(Normalization)란?
1.텍스트에 따라 정규화의 의미가 다양해진다. 그 중에서도 부동소수점 수의 정규화에 대해 알아본다.
2.'부동 소수점의 수의 정규화'란 특정 범위 내에서 가장 정확한 표현을 갖도록 하는 과정을 나타낸다.
3.부동 소수점의 수는 일반적으로 가수와 지수로 나뉘는데 정규화는 특정 범위에 가수 부분을 갖도록 만들어준다.
std::numeric_limits<자료형>::멤버함수()
1.numeric_limits 클래스는 자료형을 매개변수로 갖는다.
2.해당 자료형의 속성은 numeric_limits 클래스의 멤버함수를 통해 알 수 있다.
3.numeric_limits 클래스의 멤버함수로 대표적으로 min(), lowest(), max() 등의 함수가 있다.
numeric_limits<자료형>::min()
1.min() 멤버함수는 해당 자료형의 음수를 제외한 양수 범위 중 가장 작은 값을 반환한다.
2.따라서, min() 멤버함수는 '정규화된 부동소수점 표현에서 가장 작은 양수'를 의미한다. 즉, 부동 소수점 타입에서는 양수이면서 정규화된 가장 작은 값을 반환한다.
numeric_limits<자료형>::lowest()
1.lowest() 멤버함수는 해당 자료형의 양수와 음수를 모두 포함한 범위 중 가장 작은 값을 반환한다.
2.따라서, lowest() 멤버함수는 양수, 음수 표현 가능한 가장 작은값을 반환하지만, 'std::numeric_limits'에 정의되어 있지 않은 타입에 대해서는 예측할 수 없다.
3.예를 들면, 정수(int) 타입인 경우에는 가장 작은 음수의 값을 반환하지만, 부동 소수점 타입인 경우에는 음의 무한대를 반환할 수 있다.
#include <iostream>
int main(void)
{
std::cout << std::numeric_limits<float>::min() << std::endl; //양수 중 가장 작은 값
std::cout << std::numeric_limits<float>::lowest() << std::endl; //양수, 음수 중 가장 작은 값
return 0;
}
/*
1.17549e-38
-3.40282e+38
*/
※멤버함수란?
:특정 클래스 또는 객체에 속하는 함수를 멤버함수라고 부른다.
numeric_limits<자료형>::max()
1.max() 멤버함수는 numeric_limits 클래스에 정의된 자료형에 대해서 부호가 있는 자료형인 경우 표현 가능한 양수 중 가장 큰 값을 반환한다.
#include <iostream>
int main(void)
{
std::cout << std::numeric_limits<int>::max() << std::endl;
std::cout << std::numeric_limits<double>::max() << std::endl;
return 0;
}
/*
2147483647
1.79769e+308
*/
'C++' 카테고리의 다른 글
C++ : static_cast<자료형>(변수) (0) | 2023.12.19 |
---|---|
C++ : 오버플로우(overflow)와 언더플로우(underflow) 이해하기 (0) | 2023.12.19 |
C++ : string 자료형이란? (C언어의 char배열과 비교) (0) | 2023.11.22 |
C++ : printf, scanf 함수 대신 cout, cin 객체로 입출력하기 (0) | 2023.11.22 |
구글 Colab에서 C/C++언어 시작하기 (1) | 2023.10.31 |