24小时热门版块排行榜    

查看: 579  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

jiangxia0909

木虫 (小有名气)

[求助] 如何有效地避免double型数据相加时产生的误差

遇到问题:如一维的double数组  A[6]={-100.5, -50.9,  3.89,   -4.58,  10.999,  200.8};

这里只是一个例子,实际运算时,数组中数值之间的差距会更大。如果按数组下标依次累加,则可能产生计算误差。

想请教的问题是:如何实现double数组的累加,可降低或者避免此类计算误差 。

目前只知道避免大数加小数,但对于任意的double数组的累加是否有更有效地算法。希望小木虫里的大神指点指点。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

syan21

新虫 (小有名气)

4楼2017-10-22 13:17:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

lijf517

木虫 (小有名气)

这要看你的具体的应用场景。这种数值误差是不可避免的。写代码时数组声明为double型的,这样最终基本可保证累加后小数点后十位左右有效数字,这已经足够了。从物理角度来说,被累加的是同一物理量,量级上不会差太多。比如说你不会计算一只大象和单个电子的质量之和。如果真有量级差别比较大的两个数相加,小数被忽略物理上也是合理的。所以,结论就是,你根本不用考虑这个问题。双精度数组的普通顺序加法就足够了。如果你还是不放心,加之前先把数组的元素按绝对值大小从小到大排个序,然后依次相加,这样理论上可以最大程度避免大小数相加带来的数值误差。我测试比对过,这样的结果和原始数组直接相加结果差距很小,费时且没有必要。事实上,如果你写并行代码的话,经常出现同一数组分布式存储在多个核上,这时数组求和的顺序是随机的,你不大可能从算法层面来避免这种大小数求和。我看过的即便是一些大牛写的非常有名的程序,也不会考虑这种大小数求和带来的数值误差。费时且没意义

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

2楼2017-08-10 22:17:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiangxia0909

木虫 (小有名气)

送红花一朵
引用回帖:
2楼: Originally posted by lijf517 at 2017-08-10 22:17:06
这要看你的具体的应用场景。这种数值误差是不可避免的。写代码时数组声明为double型的,这样最终基本可保证累加后小数点后十位左右有效数字,这已经足够了。从物理角度来说,被累加的是同一物理量,量级上不会差太多 ...

非常感谢,你的回答对我很有帮助。你可以回复一个应助贴,我好给你金币

发自小木虫Android客户端
3楼2017-08-11 23:04:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +5 pnpwoqbg8f 2026-02-16 5/250 2026-02-18 18:25 by 7pdbc5bdo2
[博后之家] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 18:12 by 7pdbc5bdo2
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 18:10 by 7pdbc5bdo2
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 17:57 by 7pdbc5bdo2
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 11:09 by lqtl9djx19
[考博] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:54 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:39 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:53 by lqtl9djx19
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:38 by lqtl9djx19
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 07:55 by lotyj5cz79
[基金申请] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:40 by lotyj5cz79
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:38 by lotyj5cz79
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:23 by lotyj5cz79
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 00:40 by tk2gfblvuz
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 00:23 by tk2gfblvuz
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-17 23:40 by tk2gfblvuz
[基金申请] 基金正文30页指的是报告正文还是整个申请书 +3 successhe 2026-02-16 4/200 2026-02-17 20:56 by successhe
[基金申请] 今年春晚有几个节目很不错,点赞! +5 瞬息宇宙 2026-02-16 6/300 2026-02-17 12:49 by jymy19840415
[微米和纳米] 球磨粉体时遇到了大的问题,请指教! 10+3 6sbiam 2026-02-12 15/750 2026-02-16 15:03 by tgzxzqj
[硕博家园] 江汉大学解明教授课题组招博士研究生/博士后 +3 cleverlyy 2026-02-12 3/150 2026-02-12 21:02 by qsdf1
信息提示
请填处理意见