24小时热门版块排行榜    

Znn3bq.jpeg
北京石油化工学院2026年研究生招生接收调剂公告
查看: 604  |  回复: 3

jiangxia0909

木虫 (小有名气)

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

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

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

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

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

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的回帖

syan21

新虫 (小有名气)

双精度不够,就用双双精度呗

发自小木虫Android客户端
4楼2017-10-22 13:17:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 jiangxia0909 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 326求调剂 +5 9ahye 2026-04-02 6/300 2026-04-07 21:37 by lijunpoly
[考研] 277求调剂 +13 倪建设 2026-04-06 13/650 2026-04-07 15:46 by 啊俊!
[考研] 372分材料与化工(085600)英二数二求调剂 +4 蓝笺片 2026-04-06 4/200 2026-04-07 12:30 by dongzh2009
[考研] 一志愿郑州大学085600求调剂 +20 吃的不少 2026-04-05 23/1150 2026-04-07 10:05 by 猪会飞
[考研] 生物学调剂 可调剂到生物与医药 +3 李政莹 2026-04-06 3/150 2026-04-06 19:02 by macy2011
[考研] 生物与医药求调剂 +7 heguanhua 2026-04-05 8/400 2026-04-06 18:41 by macy2011
[考研] 一志愿安徽某211 0703化学总分339求调剂 +7 晚风不晚 2026-04-04 7/350 2026-04-06 14:06 by houyaoxu
[考研] 一志愿哈尔滨工业大学085600英一数二337分求调剂 +12 lyz0427 2026-04-03 12/600 2026-04-06 06:37 by houyaoxu
[考研] 0854求调剂 +4 assdll 2026-04-03 4/200 2026-04-04 22:17 by hemengdong
[考研] 294求调剂 +6 Grey_Ey 2026-04-02 9/450 2026-04-04 22:07 by hemengdong
[考研] 301求调剂 +18 骆驼男人 2026-04-02 18/900 2026-04-04 20:33 by 蓝云思雨
[考研] 11408 一志愿西电,277分求调剂 +4 zhouzhen654 2026-04-03 4/200 2026-04-04 18:10 by 猪会飞
[考研] 怎么删帖子啊 +3 缝曦1000 2026-04-04 3/150 2026-04-04 14:20 by 土木硕士招生
[考研] 求调剂 +4 压力??大 2026-04-03 4/200 2026-04-03 21:36 by 啵啵啵0119
[考研] 一志愿安徽大学0817化学工程与技术,求调剂 +14 我不是只因 2026-04-02 15/750 2026-04-03 09:49 by 蓝云思雨
[考研] 一志愿深大085601材料工程专业(专硕)300分可以调剂去哪 +8 10160315 2026-04-02 8/400 2026-04-03 09:36 by hypershenger
[考研] 一志愿武汉理工0856,初试334 +3 26考研材料 2026-04-02 3/150 2026-04-02 21:22 by dongzh2009
[考研] 农学考研求调剂 +3 dkdkxm 2026-04-01 3/150 2026-04-02 16:04 by wangjagri
[考研] 调剂 +3 好好读书。 2026-04-01 6/300 2026-04-02 15:49 by liumengping
[考研] 能源动力 调剂 +3 不破不立0 2026-04-02 3/150 2026-04-02 12:46 by ffffjjjj
信息提示
请填处理意见