C 라이브러리-<float.h>
그만큼 float.hC 표준 라이브러리의 헤더 파일에는 부동 소수점 값과 관련된 다양한 플랫폼 종속 상수 세트가 포함되어 있습니다. 이러한 상수는 ANSI C에서 제안합니다.이 상수를 사용하면보다 이식 가능한 프로그램을 만들 수 있습니다. 모든 상수를 확인하기 전에 부동 소수점 숫자가 다음 네 가지 요소로 구성되어 있음을 이해하는 것이 좋습니다.
Sr. 아니. | 구성 요소 및 구성 요소 설명 |
---|---|
1 |
S 기호 (+/-) |
2 |
b 지수 표현의 기수 또는 기수, 2 진수 2, 10 진수 10, 16 진수 16 등 ... |
삼 |
e 지수, 최소값 사이의 정수 emin 그리고 최대 emax. |
4 |
p 정밀도, 유효 숫자의 기본 b 자릿수. |
위의 4 개 구성 요소를 기반으로 부동 소수점은 다음과 같은 값을 갖습니다.
floating-point = ( S ) p x be
or
floating-point = (+/-) precision x baseexponent
라이브러리 매크로
다음 값은 구현별로 다르며 #define 지시문으로 정의되지만 이러한 값은 여기에 제공된 값보다 낮지 않을 수 있습니다. 모든 경우에 FLT는float, DBL은 double, LDBL은 long double.
Sr. 아니. | 매크로 및 설명 |
---|---|
1 | FLT_ROUNDS 부동 소수점 추가를위한 반올림 모드를 정의하며 다음 값 중 하나를 가질 수 있습니다.
|
2 | FLT_RADIX 2 이것은 지수의 기본 기수 표현을 정의합니다. 2 진법은 2 진, 10 진법은 일반 십진 표현, 16 진법은 16 진법입니다. |
삼 | FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG 이 매크로는 숫자 (FLT_RADIX 기준)의 자릿수를 정의합니다. |
4 | FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 이 매크로는 반올림 후 변경하지 않고 표현할 수있는 최대 십진수 (밑수 -10)를 정의합니다. |
5 | FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP 이러한 매크로는 기본 FLT_RADIX의 지수에 대한 최소 음의 정수 값을 정의합니다. |
6 | FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 이러한 매크로는 10 진법의 지수에 대한 최소 음의 정수 값을 정의합니다. |
7 | FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP 이러한 매크로는 기본 FLT_RADIX의 지수에 대한 최대 정수 값을 정의합니다. |
8 | FLT_MAX_10_EXP +37 DBL_MAX_10_EXP +37 LDBL_MAX_10_EXP +37 이러한 매크로는 10 진법의 지수에 대한 최대 정수 값을 정의합니다. |
9 | FLT_MAX 1E+37 DBL_MAX 1E+37 LDBL_MAX 1E+37 이러한 매크로는 최대 유한 부동 소수점 값을 정의합니다. |
10 | FLT_EPSILON 1E-5 DBL_EPSILON 1E-9 LDBL_EPSILON 1E-9 이러한 매크로는 표현 가능한 최하위 숫자를 정의합니다. |
11 | FLT_MIN 1E-37 DBL_MIN 1E-37 LDBL_MIN 1E-37 이러한 매크로는 최소 부동 소수점 값을 정의합니다. |
예
다음 예제는 float.h 파일에 정의 된 몇 가지 상수의 사용법을 보여줍니다.
#include <stdio.h>
#include <float.h>
int main () {
printf("The maximum value of float = %.10e\n", FLT_MAX);
printf("The minimum value of float = %.10e\n", FLT_MIN);
printf("The number of digits in the number = %.10e\n", FLT_MANT_DIG);
}
다음 결과를 생성하는 위의 프로그램을 컴파일하고 실행 해 보겠습니다.
The maximum value of float = 3.4028234664e+38
The minimum value of float = 1.1754943508e-38
The number of digits in the number = 7.2996655210e-312