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

admin2020-10-26  27

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

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

答案A

解析 (x *1000+0.5)-- x 移动3 位小数,加0.5,也就是小数第4位加5,若这位大于等于5,则进1到个位。
5.16894 * 1000 ?5168.94
+0.5 ?  5169.44
(int)(x *1000+0.5)强制转换为整型结果为5169
5169 /1000.0)?5.169,由于1000.0结果自动转换为浮点数
所以 printf("%lf\n",5.169)结果是5.16900
故答案为A选项
转载请注明原文地址:https://jikaoti.com/ti/lzD0FFFM
0

最新回复(0)