
C语言 四舍五入
设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是A.x=x*100+0.5/100.0;B.x=(x*100+0.5)...
设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是
A. x=x*100+0.5/100.0;
B. x=(x*100+0.5)/100.0;
C. x=(int)(x*100+0.5)/100.0;
D. x=(x/100+0.5)*100.0;
四舍五入是怎样的情况?能否分析一下 展开
A. x=x*100+0.5/100.0;
B. x=(x*100+0.5)/100.0;
C. x=(int)(x*100+0.5)/100.0;
D. x=(x/100+0.5)*100.0;
四舍五入是怎样的情况?能否分析一下 展开
4个回答
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相同。
展开全部
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位四舍五入
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C
x先扩大100倍,把小数点后第三位移到小数点后1位再与0.5相加,再强制转换成int功能是去掉小数,既是把原数的小数点两位后的数字都去掉了,再除以100.0就还原啦
x先扩大100倍,把小数点后第三位移到小数点后1位再与0.5相加,再强制转换成int功能是去掉小数,既是把原数的小数点两位后的数字都去掉了,再除以100.0就还原啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选C。
其中int的作用把无需保留的全部扔掉,最后的除以100实际上是在移动小数点两位。
还有什么疑问吗?请补充。
其中int的作用把无需保留的全部扔掉,最后的除以100实际上是在移动小数点两位。
还有什么疑问吗?请补充。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |