double modf(double value, double *iptr); 실수 값을 정수 부분과 소수점 부분으로 분할
float modff(float value, float *iptr); 실수 값을 정수 부분과 소수점 부분으로 분할
long double modfl(long double value, long double *iptr); 실수 값을 정수 부분과 소수점 부분으로 분할
입력 매개 변수 리스트
value 실수
iptr value의 정수 부분의 값을 설정할 메모리 주소
반환 값
value의 소수점 부분
사용 예
//C언어 표준 라이브러리 함수 가이드 //double modf(double value, double *iptr); 실수 값을 정수 부분과 소수점 부분으로 분할 //float modff(float value, float *iptr); 실수 값을 정수 부분과 소수점 부분으로 분할 //long double modfl(long double value, long double *iptr); 실수 값을 정수 부분과 소수점 부분으로 분할 //실수의 정수 부분과 소수점 부분으로 분할하여 출력 #include <math.h> #include <stdio.h> int main(void) { double value, ipart, fpart; float ipartf, fpartf; long double ipartl, fpartl; value = 3.14; fpart = modf(value, &ipart); printf("%f의 정수부:%.f 실수부:%f\n", value, ipart, fpart); value = 2.1; fpart = modf(value, &ipart); printf("modf 함수: %f의 정수부:%.f 실수부:%.30f\n", value, ipart, fpart); fpartf = modff((float)value, &ipartf); printf("modff 함수: %f의 정수부:%.f 실수부:%.30f\n", value, ipartf, fpartf); fpartl = modfl(value, &ipartl); printf("modfl 함수:%f의 정수부:%.f 실수부:%.30f\n", value, ipartl, fpartl); return 0; }
출력
3.140000의 정수부:3 실수부:0.140000 modf 함수: 2.100000의 정수부:2 실수부:0.100000000000000088817841970013 modff 함수: 2.100000의 정수부:2 실수부:0.099999904632568359375000000000 modfl 함수:2.100000의 정수부:2 실수부:0.100000000000000088817841970013
* 여기에서는 Microsoft Visual Studio 2015에서 실행한 결과입니다.
Microsoft Visual Studio 2010에서는 modff 함수를 사용하였을 때 버그가 있습니다.