목차
[C언어/C++]실수형 타입, 크기, 범위
C++에서 실수형 타입은 부동 소수점 숫자를 나타내는 데이터 타입을 의미합니다. C++은 여러 가지 실수형 타입을 제공하는데, 주요한 타입으로는 float, double, long double이 있습니다.
- float: 단정도 부동 소수점 숫자를 표현하는 32비트(4바이트) 실수형 타입입니다. 대략 7자리의 유효 숫자를 저장할 수 있습니다.
- double: 배정도 부동 소수점 숫자를 표현하는 64비트(8바이트) 실수형 타입입니다. 대략 15자리의 유효 숫자를 저장할 수 있습니다. C++에서 가장 널리 사용되는 실수형 타입입니다.
- long double: 더 높은 정밀도의 부동 소수점 숫자를 표현하는 타입으로, double보다 더 큰 범위의 유효 숫자를 저장할 수 있습니다. 구현에 따라 80비트 이상의 크기를 가질 수도 있습니다.
이제 각 실수형 타입의 최댓값(max), 최솟값(min), 그리고 가장 작은 양수 값(lowest)을 살펴보겠습니다:
- float
max: 대략 3.40282e+38 (3.4 x 10^38)입니다.
min: 대략 1.17549e-38 (1.2 x 10^-38)입니다.
lowest: 가장 작은 양수 값이므로, 음수가 없는 float 타입의 경우 0입니다.
- double
max: 대략 1.79769e+308 (1.8 x 10^308)입니다.
min: 대략 2.22507e-308 (2.2 x 10^-308)입니다.
lowest: 가장 작은 양수 값이므로, 음수가 없는 double 타입의 경우 0입니다.
long double: 구현에 따라 다를 수 있으며, double보다 더 큰 범위의 최댓값과 최솟값을 가지지만 표준화된 범위는 없습니다.
이러한 값들은 컴파일러와 플랫폼에 따라 다소 차이가 있을 수 있으며, numeric_limits 헤더를 통해 C++ 프로그램에서 실제 값들을 확인할 수 있습니다. 예를 들어, std::numeric_limits<double>::max()와 같이 사용할 수 있습니다.
간단히 설명하면 OS에 따라 실수형 타입의 크기가 바뀌지만 기본적으로는 위와 같은 크기를 가집니다.
실수형 타입 예제로 쉽게 이해하기
실수형 크기 확인 코드>>
#include <iostream>
int main() {
std::cout << "Size of float: " << sizeof(float) << " bytes" << std::endl;
std::cout << "Size of double: " << sizeof(double) << " bytes" << std::endl;
std::cout << "Size of long double: " << sizeof(long double) << " bytes" << std::endl;
return 0;
}
결과>>
Size of float: 4 bytes
Size of double: 8 bytes
Size of long double: 8 bytes
C:\Users\forgo\source\repos\Project7\x64\Debug\Project7.exe (process 14964) exited with code 0.
Press any key to close this window . . .
제 컴퓨터의 실수형의 크기 정보는 위와 같습니다.
실수형 범위 확인 코드>>
#include <iostream>
#include <limits>
int main() {
std::cout << "float:" << std::endl;
std::cout << " max: " << std::numeric_limits<float>::max() << std::endl;
std::cout << " min: " << std::numeric_limits<float>::min() << std::endl;
std::cout << " lowest: " << std::numeric_limits<float>::lowest() << std::endl;
std::cout << "double:" << std::endl;
std::cout << " max: " << std::numeric_limits<double>::max() << std::endl;
std::cout << " min: " << std::numeric_limits<double>::min() << std::endl;
std::cout << " lowest: " << std::numeric_limits<double>::lowest() << std::endl;
std::cout << "long double:" << std::endl;
std::cout << " max: " << std::numeric_limits<long double>::max() << std::endl;
std::cout << " min: " << std::numeric_limits<long double>::min() << std::endl;
std::cout << " lowest: " << std::numeric_limits<long double>::lowest() << std::endl;
return 0;
}
결과>>
float:
max: 3.40282e+38
min: 1.17549e-38
lowest: -3.40282e+38
double:
max: 1.79769e+308
min: 2.22507e-308
lowest: -1.79769e+308
long double:
max: 1.79769e+308
min: 2.22507e-308
lowest: -1.79769e+308
C:\Users\forgo\source\repos\Project7\x64\Debug\Project7.exe (process 4456) exited with code 0.
Press any key to close this window . . .
범위를 잘 확인하여서 overflow가 발생하지 않도록 합니다.
참고로 lowest 은 음수까지 포함해서 작은 값이고 min는 양의 절대값 중에 가장 작은 값입니다.
예제 코드 다운로드>>
'C언어 C++ Programming' 카테고리의 다른 글
[C언어/C++]const란? 사용이유(constexpr 비교, int&, 함수 인자) (0) | 2023.08.09 |
---|---|
[C언어/C++] ASCII 코드란? 정수에서 변환해보기 예제(static_cast) (0) | 2023.08.04 |
[C언어/C++] 고정형 정수형이란? 예제 코드로 쉽게 이해하기(int8_t, int16_t, int32_t, int64_t) (0) | 2023.08.01 |
[C언어/C++] 정수형 타입 종류, 크기, 범위, 예제 코드로 확인(sizeof, numeric_limits) (0) | 2023.07.31 |
[C언어/C++]전처리기 #ifdeff란? 사용 목적, 예제로 쉽게 이해하기(Preprocessor, sharp) (0) | 2023.07.28 |