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

悬赏问题

  • ¥15 输出区间内所有的完数的个数。 要简单点的程序
  • ¥15 asp.core 权限控制怎么做,需要控制到每个方法
  • ¥20 while循环中OLED显示中断中的数据不正确
  • ¥15 这个视频里的stm32f4代码是怎么写的
  • ¥15 JNA调用DLL报堆栈溢出错误(0xC00000FD)
  • ¥15 请教SGeMs软件的使用
  • ¥15 自己用vb.net编写了一个dll文件,如何只给授权的用户使用这个dll文件进行打包编译,未授权用户不能进行打包编译操作?
  • ¥50 深度学习运行代码直接中断
  • ¥20 需要完整的共散射点成像代码
  • ¥15 编写vba代码实现数据录入工作