목적
- 반올림을 수학적으로 이해하고 C 에다가 적용시킨다.
문제
코드
#include <iostream>
#include <cmath>
#include <ctype.h>
using namespace std;
int main(void)
{
double dIn, dPoint;
dIn = 1.0;
dPoint = 0.0;
long lNat = 0;
while(dIn != 0)
{
cout << "실수값을 하나 입력하세요 : ";
cin >> dIn;
if(dIn != 0)
{
lNat = dIn < 0 ? -fabs(dIn) : fabs(dIn);
dPoint = dIn - lNat;
cout << dIn << "의 반올림값 : ";
if(fabs(dPoint) >= 0.5)
(lNat = dIn < 0 ? lNat - 1 : lNat + 1);
cout << lNat << endl;
}
}
return 0;
}
해설
- fabs() 함수는 절대값을 구하되 소숫점 까지 받아서 출력할수 있습니다.
- 부호를 비교해서 0 보다 작을때 음의 부호를 계산할때 -1을 하여 반올림 할수 있습니다.
- 0.5 보다 크거나 같으면 음일때는 -1 양일때는 +1 을 하며 계산후 소숫점아래는 버립니다.
- 0 이 되면 판정을 하지 안하고 종료하게 했습니다.
참고
- 유사 문제