若变量f已说明为float类型,i为int类型,则下面哪些表达式(或语句)能够实现将f中的数值保留小数点后两位,第三位进行四舍五入的运算?(多选)
A. f=(f*100+0.5)/100.0 B. i=f*100+0.5,f=i/100.0;
C. f=(int)(f*100+0.5)/100.0; D. f=(f/100+0.5)*100.0;
高手解决后讲一下原因 先谢谢了!!
參考答案:答案是BC。两者原理是一样的。
首先把f*100+0.5强制转换成整型,i=f*100+0.5与(int)(f*100+0.5)效果相同,整型强制转换是将小数部分统统去掉,而不是四舍五入。所以要四舍五入地保留两位小数,就要先扩大100倍,如果此时就进行强制转换,就不能保留小数了,所以要加上0.5,进行人工的“四舍五入”。然后再除以100.0,将结果赋予浮点型的变量f,就成功的保留了两位小数。
另外注意,强制类型转换(int)的优先级高于加减乘除运算,f=(int)(f*100+0.5)/100.0;与f=(int)((f*100+0.5)/100.0); 结果是不同的。