我正在学习数值分析,我不明白这一点:当添加大量浮点数时,最好的方法是从最低到最高将数字相加。为什么这比从高到低的数字相加更精确?
发布于 2018-02-26 18:16:45
假设您使用的是一个精度为3位的十进制浮点系统。如果你按这个顺序加上的正和数3+3+4+40+70+300+800+1000,你会得到部分和:,6 10 50 120 420 1220 2220,最后的结果是确切的和:,在任何一步都不存在任何近似。
如果反过来将它们相加,则会得到部分和:1800 2100 2170 2210 2210 2210 2210
浮点表示在0附近有更多的精度。一般来说,目标是使每个部分和的结果尽可能接近于零,以便每个部分和尽可能准确。当对相同符号的数字求和时,这意味着首先将较小的数字相加。
发布于 2018-02-26 18:12:18
当你把一个小数字和一个大数字相加时,你可能会失去很多精度。作为一个简单的例子,尝试使用(32位)浮点数将1000万个1和20000000相加。如果你先把所有的加起来(得到1000万),然后再加上2000万,你就得到了正确的答案,3000万。但是如果你从2000万开始,然后加上1000万,你最终会得到2000万。这是因为,在32位浮点运算中,2000万+1等于2000万。
https://stackoverflow.com/questions/48980354
复制相似问题