Monday, August 21, 2006
C언어 기초] 소수점 반올림 함수; Round To Int, roundToInt()
C언어에는 반올림 함수가 내장되어 있지 않기에, 다음과 같이 직접 만들어서 써야 합니다. 실수를 반올림하여 정수로 만드는 것입니다. 즉 가장 가까운 정수 (Nearest Integer) 를 구하여 반환하는 함수입니다.
위의 소스 코드 맨 아래쪽의 int roundToInt(double x) {... 라는 곳부터가 반올림 함수입니다.
위의 소스를 컴파일하면 10 이 나오지만, 10.499999999999999 끝에 9를 하나 더 추가하면 11 이 나오는군요.
10.499999999999999 : 10
10.4999999999999999 : 11
이렇게 미묘함이 있습니다.
비주얼C는 물론 gcc 에서도 같은 결과였습니다.
실수를, 지정한 자릿수에서 실수로 반올림 함수: ▶▶ C언어] 실수를 실수로 반올림 함수, 자릿수 지정; Round to Double Function
반올림 없이 무조건 소수점 이하 버리기: ▶▶ C언어] 소수점 이하 버리기, 실수를 정수로; float to int
실수 소수점 이하 반올림 예제
#include <stdio.h>
int roundToInt(double x);
int main() {
printf("%d\n", roundToInt(10.499999999999999));
return 0;
}
int roundToInt(double x) {
if (x >= 0) return (int) (x + 0.5);
return (int) (x - 0.5);
}
int roundToInt(double x);
int main() {
printf("%d\n", roundToInt(10.499999999999999));
return 0;
}
int roundToInt(double x) {
if (x >= 0) return (int) (x + 0.5);
return (int) (x - 0.5);
}
위의 소스 코드 맨 아래쪽의 int roundToInt(double x) {... 라는 곳부터가 반올림 함수입니다.
위의 소스를 컴파일하면 10 이 나오지만, 10.499999999999999 끝에 9를 하나 더 추가하면 11 이 나오는군요.
10.499999999999999 : 10
10.4999999999999999 : 11
이렇게 미묘함이 있습니다.
비주얼C는 물론 gcc 에서도 같은 결과였습니다.
실수를, 지정한 자릿수에서 실수로 반올림 함수: ▶▶ C언어] 실수를 실수로 반올림 함수, 자릿수 지정; Round to Double Function
반올림 없이 무조건 소수점 이하 버리기: ▶▶ C언어] 소수점 이하 버리기, 실수를 정수로; float to int
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home