반올림이 안되던데???
아래 주석으로 실제 나와야할 결과값을 적어 놨으니깐.
그렇게 나오도록 고치숑
ㅅㄱ
#include <Stdio.h>
#include <stdlib.h>
void rou(double num, int n)
{
n=n+1;
double m, x;
int i, h=1;
if(n>=0)
{
x=num-(int)num;//소수 부분 0.56489
for(i=0; i<n; i++)
{
h=h*10;//100
}
m=x*h;//564.89
if((int)m%10>=5)
{
m=m+10-((int)m%10);
}
else
{
m=m-((int)m%10);
}
m=(int)m/(double)h;
printf("%lf \n", (int)num+m);
}
else// n<0
{
n=-n;//1 140.000
x=(int)num;//143.000
for(i=0; i<n; i++)
{
h=h*10;//10
}
if((int)x%h>=5*(h/10))
{
m=(x+h)-((int)x%h);
printf("%lf \n", m);
}
else
{
m=x-((int)x%h);
printf("%lf \n", m);
}
}
}
int main(void)
{
double num=123.54589;
//버림이 일어 나는 부분
rou(154.556, -1);// 정상적인 결과치 150.000
rou(143.446, 0);// 정상적인 결과치 143.000
rou(153.546, 1);// 정상적인 결과치 153.500
//올림(반올림)이 일어나야 할 부분
rou(155.556, -1);// 정상적인 결과치 160.000
rou(143.546, 0);// 정상적인 결과치 144.000
rou(153.556, 1);// 정상적인 결과치 153.600
system("pause");
return 0;
}