C语言 实数返还指定小数位数的四舍五入后的值

问题描述:

C语言 实数返还指定小数位数的四舍五入后的值
■■原程序■■
#include
#include
float round(float x,int n)
{ float z;
long i;
i=pow(10,n);
z=(long)(x*i+0.5)/(float)i; 为什么+0.5就可以四舍五入?■■■■
return z;
}
main()
{ float x,y;
int n;
printf("input x n\n");
scanf("%f%d",&x,&n);
y=round(x,n);
printf("x=%f,round(%f)=%f\n",x,x,y);
}
1个回答 分类:综合 2014-09-18

问题解答:

我来补答
你要知道long的话是不计小数的,比如2/5是等于2,不是等于2.5
所以加0.5再转换成long的话就可以四舍五入了
比如 你最后结果得1.2,加0.5之后得1.7,转成long的话就是1
比如 你最后结果得1.7,加0.5之后得2.2,转成long的话就是2
是不是实现四舍五入了?
 
 
展开全文阅读
剩余:2000
上一页:课时练P3