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

 
Previous Post Java 자바] 음수 지수 계산 공식; 마이너스 제곱(거듭제곱; 누승); Negative ...Java 자바] 음수에 대한 제곱, 거듭제곱(세제곱, 네제곱); Power of Negat...마우스 드라이버 다운로드 (MS 마우스용 다운); Mouse Driver Download마우스 커서 이동 속도 변경 방법; 빠르게 느리게 Mouse Cursor Speed마우스 커서 변경 방법, 마우스 아이콘 지정 법; Mouse Cursor Change울트라에디트 사용법 강좌; 한글 매뉴얼, 팁 UltraEdit Manual울트라에디트 영문 스펠링 철자 검사 기능 사용법, UltraEdit Spelling Che...Python 파이썬] 문자열의 CRC32 값 구하기, String CRC 계산 함수 zli...Python 파이썬] 퍼센트 계산, 백분율 구하기 함수? Percent Percentage...Perl 펄] 배열의 중복된 숫자 제거, 동일 값 지우기; Array Unique Numb...

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

Saturday, April 07, 2007

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 9:19 PM, Blogger 류우석 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 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top