设变量n为float型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位四舍五入运算的表达式是(B)A.n=(n*100+0.5)/100.0B.m=n*100+0.5,n=m/100.0C.n=n*100+0.5/100.0D.n=(n/100+0.5)*100.0为什么这题是选B啊,

问题描述:

设变量n为float型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位四舍五入运算的表达式是(B)
A.n=(n*100+0.5)/100.0
B.m=n*100+0.5,n=m/100.0
C.n=n*100+0.5/100.0
D.n=(n/100+0.5)*100.0
为什么这题是选B啊,

因为B是正确的.n是浮点数,乘100+0.5后,若原先小数第三位>=5,则+0.5后就向前进位了;否则不进位,赋给整型m后,小数部分丢弃,达到了四舍五入的目的;再除以100是恢复原数的大小.
比如:
n=3.1415→m=n*100+0.5=314.15+0.5=314.65→314.n=314/100.0=3.14.这是不进位的情况;
n=3.1455→m=n*100+0.5=314.55+0.5=315.05→315.n=315/100.0=3.15.这是有进位的情况.
选项A能四舍五入,但不能保留2位小数;
选项C操作的不是小数后第三位而是第五位了;
选项D操作的不是小数后而是操作到小数点前面去了……