C언어 C++ Programming

[C언어/C++]실수형 타입, 크기, 범위, 예제로 쉽게 이해하기(range, size, float data type, lowest, min, max)

끄적끄적아무거나 2023. 8. 2. 08:39
반응형

 

목차

     

     

     

     

    [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는 양의 절대값 중에 가장 작은 값입니다.

     

     

     

     

    예제 코드 다운로드>>

     

    main.cpp
    0.00MB

     

    반응형