본문 바로가기

Computer Science&Engineering/C\C++

C언어 반올림, 헤더없이 구현하기

반올림 구할 때 당연하게 #include <math.h> 해서 round() 함수를 썼었는데, 알고리즘 문제풀이 사이트에서는 헤더파일 포함이 안되더라고요. 그래서 반올림을 헤더 없이 구현해보았습니다.

 

양수의 경우 bias로 0.5를 더해준다음에 int 형식으로 변환해주면 됩니다.

 

#include <stdio.h>

int round(float value){
	value += 0.5;
	return (int)value;
}

void main(void) {
	float a = 2.875f;
	float b = 2.1234f;
	
    printf("%f ==> %d\n", a, round(a));
    printf("%f ==> %d\n", b, round(b));
}

 

음수의 경우도 마찬가지로, 0.5를 빼주면 될 것 같습니다.

 

#include <stdio.h>

int round(float value){
	if (value > 0)
		value += 0.5;
	else
		value -= 0.5;
	return (int)value;
}

void main(void) {
	float a = 2.875f;
	float b = 2.1234f;
	float c = -3.3526f;
	float d = -3.9876f;
	
    printf("%f ==> %d\n", a, round(a));
    printf("%f ==> %d\n", b, round(b));
    printf("%f ==> %d\n", c, round(c));
    printf("%f ==> %d\n", d, round(d));
}

 

출력 화면


p.s.  round 함수를 삼항연산자를 사용해서 더 간단하게 만들면 이렇게도 만들 수 있을것같네요

 

int round(float value)
{
	return (value>0)? (int)(value+=0.5): (int)(value-=0.5);
}

 

반응형