반올림 구할 때 당연하게 #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);
}
반응형
'Computer Science&Engineering > C\C++' 카테고리의 다른 글
[C++] 함수 오버로딩 vs 오버라이딩 (0) | 2021.05.02 |
---|---|
[정올: 정보올림피아드] 128 : 반복제어문1 - 형성평가4 문제풀이 (0) | 2020.07.14 |
[정올: 정보올림피아드] 126 : 반복제어문1 - 형성평가2 문제풀이 (0) | 2020.07.14 |
가벼운 IDE | C , C++ 컴파일러 추천 | dev-C++ 다운로드 | 설치 5분컷 (0) | 2020.07.09 |