컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Tuesday, December 19, 2006

C언어] 실수, 정수부/소수부 구하기, 소수점 이하만 추출; Get FRACTIONAL PART Only


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

123.456789555 라는 실수에서

123 이 정수부이고

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

math.h 헤더 파일의

double modf(double x, double *ipart);

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


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


파일명: 0.cpp
#include <stdio.h>
#include <math.h>


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 <stdio.h>


int main(void) {

  double n = 123.456789555;

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

  return 0;
}




▶▶ C언어] 소수점 이하 버리기, 실수를 정수로; float to int




tag: cpp
C언어 | C/C++ (Visual C++)

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top