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

 
Previous Post 엑셀/Excel] 소수점 이하 버리기 함수, TRUNC(), INT() 차이, 차이점엑셀/Excel] 문자열 순서 반전, 문자 거꾸로 뒤집기 함수; VBA매크로, Revers...옥상 시멘트 벽 벌레, 빨간 진드기, 전등 벌레, 다카라다니; Takaradani; Red...윈도우] 시스템 파일 복사하는 명령어. 히든파일 카피 명령; Copy Command, Sy...오십음도] 일어 문자표; 일본어 가나 문자 도표; 고쥬옹즈 Gojuuonzu, Gojuon울트라에디트] 영어 알파벳 대소문자 변환, 대문자 소문자 변환; UltraEdit Lowe...자바스크립트] 알파벳 대소문자 바꾸기, 대문자 소문자 변환 함수; JavaScript Lo...엑셀/VBA매크로] 배열 크기 사이즈, 요소 개수 구하기; VB Array Size, Le...유니코드 코드표, 문자표 보기/유니코드표 모든 문자 다운로드 주소; Unicode Char...도스에서 빠져 나오는 방법, 명령 프롬프트(도스창) 종료 명령어; DOS Exit

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

Tuesday, December 19, 2006
스폰서 링크

실수는 정수부(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



더 읽기:
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 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top