首页 > 解决方案 > 如何将浮点数加上一个小错误?

问题描述

有一个文件,文件中有 10000 个数字,如下面的数字。

7.474571938241547
5.9520387080950865
8.440712641801738
7.233918953859444
5.359040371183379
7.788831268552525
5.605003246355943
5.464119475471641
4.196570126808656

所以我需要将它们与浮点类型一起添加,但是当我按照原始顺序将它们添加在一起时会有误差。因此,当我按升序添加它们时,总和会变小。当我按降序添加它们时,总和也会变小。最小化错误的最佳方法是什么?

标签: c++floating-pointoperating-system

解决方案


  1. 使用双打

  2. 使用 Kahan 求和

  3. 使用堆也对中间结果进行排序

    删除两个最小的元素(按绝对值)

    将总和重新插入堆中

  4. 0+1+2


推荐阅读