블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2328)N
Unity3D (572)N
Programming (472)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (34)
3DS Max (3)
Game (12)
Utility (116)
Etc (92)
Link (31)
Portfolio (19)
Subject (90)
iOS,OSX (38)
Android (13)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (1)
Memories (19)
Interest (37)
Thinking (36)
한글 (26)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (2)
냥이 (9)
육아 (9)
Total1,346,328
Today134
Yesterday132
Statistics Graph

달력

« » 2019.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

공지사항

태그목록

실수는 정수부(Integer Parts)와 소수부(Fractional Parts)로 이루어져 있습니다.

123.456789555 라는 실수에서

123 이 정수부이고

.456789555 가 소수부입니다. 정수부와 소수부를 분리하여 얻는 함수가

math.h 헤더 파일의

double modf(double x, double *ipart);

입니다. 소수부는 직접 반환하고, 정수부는 ipart 에 정수가 아닌 실수형으로 넣습니다.


정수부/소수부 분리, 소수점 이하만 구하는 함수 예제: modf() Function Example


파일명: 0.cpp
#include 
#include 


int main(void) {

  double integer, fraction;
  double n = 123.456789555;

  fraction = modf(n, &integer);

  printf("%.9f = %.f + %.15f\n", n, integer, fraction);


  return 0;
}


integer 변수에 정수부가 들어가는데 정수형이 아닌 실수형으로 들어갑니다. 그래서 %.f 이런 포맷 지정자를 사용하여 정수로 출력했습니다.

fraction 변수에는 소수부가 들어갑니다.


컴파일 및 실행 결과:
D:\Z>cl /nologo 0.cpp && 0.exe
0.cpp
123.456789555 = 123 + 0.456789555000000

D:\Z>

정수부와 소수부가 나누어졌습니다.

그런데 소수부가 그리 정밀하게 구해지지는 않았습니다.





modf 함수 없이, 실수에서 소수부 구하기


다음과 같이 할 수도 있습니다:
#include 
 
int main(void) {

  double n = 123.456789555;

  printf("%.9f = %d + %.15f\n", n, (int) n, n - (int) n);

  return 0;
}
[출처] http://mwultong.blogspot.com/2006/12/c-get-fractional-part-only.html


처 : 
http://sunnmoon.egloos.com/2218722
Posted by blueasa
TAG

댓글을 달아 주세요