C语言 四舍五入

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:14:49
设变量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;
四舍五入是怎样的情况?能否分析一下

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位四舍五入

选C。
其中int的作用把无需保留的全部扔掉,最后的除以100实际上是在移动小数点两位。

还有什么疑问吗?请补充。

C

x先扩大100倍,把小数点后第三位移到小数点后1位再与0.5相加,再强制转换成int功能是去掉小数,既是把原数的小数点两位后的数字都去掉了,再除以100.0就还原啦