int isgreater(real-floating x, real-floating y); x>y 매크로 함수
int isgreaterequal(real – floating x, real – floating y); x>=y 매크로 함수
int isless(real-floating x, real-floating y); x<y 매크로 함수
int islessequal(real-floating x, real-floating y); x<=y 매크로 함수
int islessgreater(real-floating x, real-floating y); (x>y)||(x<y) 매크로 함수
int isunordered(real-floating x, real-floating y); (isnan(x)||isnan(y)) 매크로 함수
int fpclassify(real-floating x); x가 어떤 종류의 값인지 판별
int isfinite(real – floating x); x가 inf가 아닌지 판별
int isnan(real-floating x); x가 nan인지 판별
int isinf(real-floating x); x가 inf인지 팔별
int signbit(real-floating x); x가 음수인지 판별
math.h 에서는 실수에 관한 다양한 판별식 매크로 함수를 제공합니다. 다음의 예제는 실수에 관한 다양한 판별식 매크로 함수를 사용하는 예제입니다.
사용 예
//C언어 표준 라이브러리 함수 가이드 //int isgreater(real-floating x, real-floating y); x>y 매크로 함수 //int isgreaterequal(real - floating x, real - floating y); x>=y 매크로 함수 //int isless(real-floating x, real-floating y); x<y 매크로 함수 //int islessequal(real-floating x, real-floating y); x<=y 매크로 함수 //int islessgreater(real-floating x, real-floating y); (x>y)||(x<y) 매크로 함수 //int isunordered(real-floating x, real-floating y); (isnan(x)||isnan(y)) 매크로 함수 //int fpclassify(real-floating x); x가 어떤 종류의 값인지 판별 //int isfinite(real - floating x); x가 inf가 아닌지 판별 //int isnan(real-floating x); x가 nan인지 판별 //int isinf(real-floating x); x가 inf인지 팔별 //int signbit(real-floating x); x가 음수인지 판별 //math.h 에서 제공하는 매크로 판별식 사용 #include <math.h> #include <stdio.h> int main(void) { double d1 = 1.0, d2 = 0.0, d3=-1.0; double d4 = d1 / d2;//inf double d5 = nan("");//nan printf("%f>%f : %d\n",d1,d2, isgreater(d1,d2)); printf("%f>=%f : %d\n",d1,d2, isgreaterequal(d1,d2)); printf("%f<%f : %d\n",d1,d2, isless(d1,d2)); printf("%f<=%f : %d\n", d1, d2,islessequal(d1, d2)); printf("%f>%f || %f<%f : %d\n", d1,d2,d1,d2,islessgreater(d1, d2)); printf("%f or %f is nan: %d\n",d1,d5, isunordered(d1, d5)); printf("실수 분류 (nan:%d, inf:%d, normal:%d, subnormal:%d, zeor:%d)\n", FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO); printf("%f 분류: %d\n", d1, fpclassify(d1)); printf("%f 분류: %d\n", d2, fpclassify(d2)); printf("%f 분류: %d\n", d3, fpclassify(d3)); printf("%f 분류: %d\n", d4, fpclassify(d4)); printf("%f 분류: %d\n", d5, fpclassify(d5)); printf("%f is finite: %d\n", d4, isfinite(d4)); printf("%f is nan: %d\n", d5, isnan(d5)); printf("%f is infinite: %d\n", d4, isinf(d4)); if (signbit(d3)) { printf("%f is 음수\n", d3); } else { printf("%f is 양수\n", d3); } return 0; }
출력
1.000000>0.000000 : 1 1.000000>=0.000000 : 1 1.000000<0.000000 : 0 1.000000<=0.000000 : 0 1.000000>0.000000 || 1.000000<0.000000 : 1 1.000000 or nan is nan: 1 classify (nan:2, inf:1, normal:-1, subnormal:-2, zeor:0) 1.000000 classify: -1 0.000000 classify: 0 -1.000000 classify: -1 inf classify: 1 nan classify: 2 inf is finite: 0 nan is nan: 1 inf is infinite: 1 -1.000000 is 음수