언제나휴일 2016. 1. 3. 16:18
반응형

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 함수를 사용하였을 때 버그가 있습니다.

반응형