线段树误我 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日