C语言怎么四舍五入
2022-12-02 · 百度认证:北京惠企网络技术有限公司官方账号
关注
展开全部
# incloud <stdio>
int main(void)
{
float a ;
scanf(“%f”,&a);
a=(int)(a*1000+0.5)/1000.0;
printf (“%0.3f”,a);
return 0;
}
扩展资料:
其他方法实现四舍五入:
int myround(double indata,int precision,double * outdata)
{
long pre = 1,i;
for(i = 0; i <precision; i ++)pre = pre * 10;
if(cy_FloatCompare(indata,0.00)> 0)
* outdata =(int)((indata * pre)+0.5)/100.00;
else
* outdata =(int)((indata * pre)-0.5)/100.00;
return 0;
}
// cy_FloatCompare是浮点数与0比较的函数,假设它存在。返回值与strcmp相同。
展开全部
利用取整。
比如 四舍五入到千分位,可以
(int)(x*1000+0.5)/1000.0
十分位(int)(x*10+0.5)/10.0
其他类似,只改变其中倍数的值即可。
比如 四舍五入到千分位,可以
(int)(x*1000+0.5)/1000.0
十分位(int)(x*10+0.5)/10.0
其他类似,只改变其中倍数的值即可。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C,
(int)(x*100+0.5)中x*100就把小数点后两位移到整数部分了,然后强制转换为int,再除以float,所以结果为小数点后两位,其他也可以,不过不是保留两位小数。
你假设x=123.456
x*100+0.5=12345.6+0.5=12346.1//这里加0.5是为了4舌5入
然后强制转化成int
为12346
再除以100
结果
为
123.46
这样就做到了保留到小数点后两位,并将第3位四舍五入
(int)(x*100+0.5)中x*100就把小数点后两位移到整数部分了,然后强制转换为int,再除以float,所以结果为小数点后两位,其他也可以,不过不是保留两位小数。
你假设x=123.456
x*100+0.5=12345.6+0.5=12346.1//这里加0.5是为了4舌5入
然后强制转化成int
为12346
再除以100
结果
为
123.46
这样就做到了保留到小数点后两位,并将第3位四舍五入
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
利用取整运算的截断特点实现。
比如:int a=0.75;取整后赋值给a的是0,小数点后面的被截断了。
如果要做整数的四舍五入,那么可以:a=(int)(0.75+0.5);取整后得到的与数学中四舍五入的结果一致,都是1;
如果要进行小数点后面的四舍五入,可以这样计算:
要保留小数点后面两位的小数,即在小数点后面两位上做四舍五入,0.756
float a=0.756,b; int x; b=a*100; b+=0.5; x=b; b=x/100;
运算是这样的:先将0.756乘以100,得到75.6,然后利用取值运算的截断做四舍五入,75.6+0.5=76.1取整后等于76,再除以100,得到结果:0.76
比如:int a=0.75;取整后赋值给a的是0,小数点后面的被截断了。
如果要做整数的四舍五入,那么可以:a=(int)(0.75+0.5);取整后得到的与数学中四舍五入的结果一致,都是1;
如果要进行小数点后面的四舍五入,可以这样计算:
要保留小数点后面两位的小数,即在小数点后面两位上做四舍五入,0.756
float a=0.756,b; int x; b=a*100; b+=0.5; x=b; b=x/100;
运算是这样的:先将0.756乘以100,得到75.6,然后利用取值运算的截断做四舍五入,75.6+0.5=76.1取整后等于76,再除以100,得到结果:0.76
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询