1900P 2023-02-06 11:20 采纳率: 100%
浏览 51
已结题

极小数的计算结果不一致,如何解决?(语言-c++)

tex=293.9302250307
cpa1.0445 + tex*(-3.4342e-4 + tex*(8.1524e-7 - tex*3.7677-10))

这是原计算式子
计算结果为: 1.0044233901160149

式子拆开分部计算时

n18.1524e-7 - tex*3.7677-10;
n2=tex*n1;
n3=-3.4342e-4 + n2;
n4=tex*n3;
cpa=1.0445+n4;

计算结果为: 1.0044389412119084

为什么最终的计算会有差距呢

由于这段计算需要进行多次循环,误差最后会累积到一个无法接受的程度,本人学习c不久,希望指点一下,感谢!

  • 写回答

5条回答 默认 最新

  • CodeBytes 2023-02-06 11:46
    关注

    该回答引用ChatGPT
    请参考下面的解决方案,如果有帮助,还请点击 “采纳” 感谢支持!

    首先,两种方法都是进行数值计算,因此在计算过程中可能会出现一些精度误差。其次,拆开计算的方法可能导致变量类型的不同,从而导致结果的不同。最后,在计算过程中有不精确的四舍五入操作,这也可能导致误差的产生。

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

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 创建了问题 2月6日

悬赏问题

  • ¥20 Apache poi使用问题
  • ¥21 matlab怎么求时域信号的二阶导数
  • ¥15 判断两个表是否完全相同
  • ¥15 java map类型数据格式,如何快速通过前缀匹配元素
  • ¥15 stc12c5a60s2、QMC5883L、LCD1602组合测量磁场所需程序
  • ¥20 Win11测试yolov4,“找不到nvcuda.dll”怎么办?
  • ¥15 simulink绘制bode图
  • ¥15 php_network_getaddresses: getaddrinfo failed: Name or service not known
  • ¥15 用msg发消息出现的问题
  • ¥15 unity3d机械臂