我正在做一本编程书的练习C 语言书籍。该练习表明,要找到一组数字的平均值,算法如下:
avg += (x - avg) / i;
优于:
sum += x;
avg = sum / i;
“x”是用于存储输入数字的变量。它还表明除了防止溢出之外,第一个算法确实比第二个算法有一些其他好处,有人可以帮助我吗?谢谢!
我假设我们在这里讨论浮点运算(否则“更好”的平均值将很糟糕)。
在第二种方法中,中间结果(sum
)往往会无限制地增长,这意味着您最终将失去低端精度。在第一种方法中,中间结果应与输入数据的大小大致相似(假设您的输入没有巨大的动态范围)。这意味着它将更好地保持精度。
However,我可以想象为i
越来越大,价值(x - avg) / i
(相对)会变得越来越不准确。所以它也有它的缺点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)