8.3 최솟값과 최댓값 표현하기

이번에는 실수 자료형의 양수 최솟값과 최댓값을 표현하는 방법을 알아보겠습니다(Visual Studio, Windows).

real_number_min_max.c

#include <stdio.h>
#include <float.h>    // 실수 자료형의 양수 최솟값, 최댓값이 정의된 헤더 파일

int main()
{
    float num1 = FLT_MIN;           // float의 양수 최솟값
    float num2 = FLT_MAX;           // float의 양수 최댓값
    double num3 = DBL_MIN;          // double의 양수 최솟값
    double num4 = DBL_MAX;          // double의 양수 최댓값
    long double num5 = LDBL_MIN;    // long double의 양수 최솟값
    long double num6 = LDBL_MAX;    // long double의 양수 최댓값

    printf("%.40f %.2f\n", num1, num2);    // 0.0000000000000000000000000000000000000118
                                           // 340282346638528859811704183484516925440.00

    printf("%e %e\n", num3, num4);         // 2.225074e-308 1.797693e+308
    printf("%Le %Le\n", num5, num6);       // 2.225074e-308 1.797693e+308
 
    return 0;
}

실행 결과

0.0000000000000000000000000000000000000118 
340282346638528859811704183484516925440.00
2.225074e-308 1.797693e+308
2.225074e-308 1.797693e+308

float.h 헤더 파일에 각 자료형 별로 양수 최솟값과 최댓값이 정의되어 있습니다. printf 함수에서 서식 지정자를 %.40f, %.2f처럼 소수점 뒤에 숫자를 지정하면 해당 숫자 만큼 소수점 이하 자릿수를 출력합니다(서식 지정자 자릿수 설정 방법은 '부록 2. 서식 지정자'를 참조하세요).

double, long double 최소, 최댓값들은 소수점 이하 자리가 매우 길기 때문에 printf 함수에서 서식 지정자로 %e, %Le를 사용하여 지수 표기법으로 출력해보았습니다. 참고로 리눅스에서 LDBL_MIN, LDBL_MAX 값은 3.362103e-4932, 1.189731e+4932입니다.