全村的希望· 2023-07-19 10:37 采纳率: 89.5%
浏览 21
已结题

一道书上的练习题有些不懂


#include <stdio.h>
int main()
{
    double x = 5.16894;
    printf("%f\n",(int)(x*1000+0.5)/(double)1000);
}
 

为啥最后把计算结果转换为了int类型但输出的值是5.169000呢,转换成int不是跟前面的格式控制%f不一致了吗

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-07-19 10:41
    关注

    强制类型转换优先级高,先转换,后做除法
    除法的除数是double,返回浮点
    严格来说,应该用 lf 不是 f

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月27日
  • 已采纳回答 7月19日
  • 创建了问题 7月19日

悬赏问题

  • ¥15 网络分析设施点无法识别
  • ¥15 状态图的并发态问题咨询
  • ¥15 PFC3D,plot
  • ¥15 VAE模型编程报错无法解决
  • ¥100 基于SVM的信息粒化时序回归预测,有偿求解!
  • ¥15 物体组批优化问题-数学建模求解答
  • ¥15 微信原生小程序tabBar编译报错
  • ¥350 麦克风声源定位坐标不准
  • ¥15 apifox与swagger使用
  • ¥15 egg异步请求返回404的问题