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

 
Saturday, April 07, 2007

C언어] 실수를 실수로 반올림 함수, 자릿수 지정; Round to Double Function


C언어에서, double형 실수를, 지정한 자릿수만큼 반올림하는 방법입니다. 엑셀의 반올림 함수처럼 작동하는 것입니다.

지정한 자리수의 아래쪽 부분부터는 모두 00000...으로 채워집니다.

자릿수 인수를 0으로 지정하면, 소수점 이하가 모두 반올림되어 정수처럼 되지만, 진짜 정수형으로 변하는 것은 아닙니다.


참고로, 원래 printf() 함수로 출력하면 반올림이 되어 출력됩니다. 그런데 가끔 특정 소수점 이하의 소수부를 지워야 할 때가 있습니다. 그때 이 함수를 사용하면 적당합니다.

사용법은, roundXL(숫자, 자릿수) 입니다.

Round to Double: 실수로 반올림 소스


소스 파일명: example.cpp
(※ 스크롤 박스 사용법: 박스 안을 마우스로 클릭한 후, 키보드의 좌우 화살표키를 누르면 양옆으로 움직일 수 있습니다. 박스에서 다시 나오려면, 박스 바깥의 아무곳이나 클릭하면 됩니다.)
#include <stdio.h>
#include <stdlib.h> // itoa()
#include <string.h> // strcat()

double roundXL(double x, int digits);


int main(void) {

  printf("%f\n", roundXL(12.534567890, 0)); // 13.000000
  printf("%f\n", roundXL(12.534567890, 1)); // 12.500000
  printf("%f\n", roundXL(12.534567890, 2)); // 12.530000
  printf("%f\n", roundXL(12.534567890, 3)); // 12.535000

  printf("%f\n", roundXL(-0.64527, 4));     // -0.645300

  return 0;
}


double roundXL(double x, int digits) {
  char format[5 + 1] = "%.";
  char temp[2 + 1];
  char result[500 + 1];

  if (digits > 99) digits = 99; // 자릿수가 너무 크면 제한


  ///////////////////////////////////////////////////////////
  // sprintf 에서 사용할 "형식 지정자" 문자열 만들기
  // 소수점 몇째 자리까지 나타낼 것인가 하는 것
  itoa(digits, temp, 10); // 자릿수인 digits 를 10진수로, 문자열 temp 로 변환
  strcat(format, temp); strcat(format, "f"); // "%.3f" 이런 식으로 형식 지정자 생성


  ///////////////////////////////////////////////////////////
  // 본격적인 반올림 작업 시작
  sprintf(result, format, x); // x 를 digits(=format) 자리에서 반올림하여 문자열 result에 저장

  return atof(result); // 문자열 result 를, 숫자(실수)로 변환 후 반환
}




실수를 정수로 반올림 함수 소스: ▶▶ C언어 기초] 소수점 반올림 함수; Round To Int, roundToInt()

1 Comments:
At November 9, 2016 at 9:19 PM, Blogger Unknown said...

If you wrote them in person you have a really warmest heart alike .................

 

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