设有定义:double x=5.16894;,则语句printf("%If\n",(int)(x*1000+0.5)/1000.);的输出结果是( )。

admin2019-01-11  51

问题 设有定义:double x=5.16894;,则语句printf("%If\n",(int)(x*1000+0.5)/1000.);的输出结果是(    )。

选项 A、5.16900
B、5.16800
C、0.00000
D、输出格式说明符与输出项不匹配,产生错误信息

答案A

解析 (x*1000+0.5)表示x向右移动3位小数,加0.5,也就是x的小数第4位加5,若这位大于等于5,则进1到个位。因为“5.16894*1000=5168.94,5168.94+0.5=5169.44”,所以(int)(x*1000+0.5)强制转换为整型结果为5169。“5169/1000.0=5.169”,由于分母1000.0为浮点型所以结果自动转换为浮点数,故printf(“%If\n”,5.169)结果是5.16900。故答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/R4xp777K
0

相关试题推荐
最新回复(0)