若有,正确定义的语句:double x=5.16894语句printf(%f/n,(int)(x *1000+0.5)/

问题描述:

若有,正确定义的语句:double x=5.16894语句printf(%f/n,(int)(x *1000+0.5)/(double)1000);
输出的结果为什么是5.16900,而不是5.169440?
1个回答 分类:综合 2014-09-25

问题解答:

我来补答
这是小数第4位四舍五入算法.
(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 /(double)1000)-〉5.169
所以 printf("%f\n",5.169) 结果 是5.16900
 
 
展开全文阅读
剩余:2000
上一页:这一步看不懂
下一页:这题详细解释