作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/04/28 04:35:17
若有,正确定义的语句:double x=5.16894语句printf(%f/n,(int)(x *1000+0.5)/(double)1000);
输出的结果为什么是5.16900,而不是5.169440?
若有,正确定义的语句:double x=5.16894语句printf(%f/n,(int)(x *1000+0.5)/
这是小数第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