线段树误我 2023-03-18 13:02 采纳率: 28.6%
浏览 14
已结题

关于#输出#的问题,如何解决?


    long long p=2086458231 * 1.0 / 3.213*135.2312;
    printf("%lld",p);


         printf("%lld",2086458231 * 1.0 / 3.213*135.2312);

为什么这两种输出结果不一样啊

  • 写回答

2条回答 默认 最新

  • 追cium 2023-03-18 13:08
    关注

    参考GPT和自己的思路:

    这两种输出结果不一样的原因是因为数据类型转换导致的。在第一种情况中,long long类型的变量p会先计算2086458231/3,然后再乘以135,最后会将结果赋给p。而在第二种情况中,整个表达式2086458231 * 1.0 / 3.213135.2312都是double类型的,最后的结果也是double类型的。由于long long类型的范围比double类型小,所以在强制类型转换时可能存在精度丢失的情况,导致输出的结果不一致。可以将第二种情况的输出语句改为printf("%lld",(long long)(2086458231 * 1.0 / 3.213135.2312));来保证输出的结果正确。

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

报告相同问题?

问题事件

  • 系统已结题 4月2日
  • 已采纳回答 3月25日
  • 创建了问题 3月18日

悬赏问题

  • ¥50 C++使用TWAIN协议如何实现A3幅面扫描仪扫描A4横向
  • ¥15 如何在sql server里完成筛选
  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题