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;
四舍五入是怎样的情况?能否分析一下
展开
 我来答
惠企百科
2022-12-02 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部

# 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相同。

lrb1983091
2008-03-20 · TA获得超过825个赞
知道小有建树答主
回答量:572
采纳率:0%
帮助的人:911万
展开全部
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位四舍五入
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尊至戒魔
2008-03-20
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
C

x先扩大100倍,把小数点后第三位移到小数点后1位再与0.5相加,再强制转换成int功能是去掉小数,既是把原数的小数点两位后的数字都去掉了,再除以100.0就还原啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
PrettyCoy
2008-03-20
知道小有建树答主
回答量:41
采纳率:0%
帮助的人:0
展开全部
选C。
其中int的作用把无需保留的全部扔掉,最后的除以100实际上是在移动小数点两位。

还有什么疑问吗?请补充。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式