Floating point 将大量浮点数相加

Floating point 将大量浮点数相加,floating-point,Floating Point,我正在学习数值分析,但我不明白这一点:当添加大量浮点数时,最好的方法是从最低到最高的数字相加。为什么这比从高到低的数字相加更精确 当你把一个小数字和一个大数字相加时,你可能会失去很多精度。作为一个简单的例子,尝试使用(32位)浮点数将1000万1和20000000相加。如果你先把所有的加起来(得到1000万),然后再加上2000万,你就得到了正确的答案,3000万。但若你们从2000万开始,再加上1000万,你们最终会得到2000万。这是因为,在32位浮点中,2000万+1等于2000万。假设您

我正在学习数值分析,但我不明白这一点:当添加大量浮点数时,最好的方法是从最低到最高的数字相加。为什么这比从高到低的数字相加更精确

当你把一个小数字和一个大数字相加时,你可能会失去很多精度。作为一个简单的例子,尝试使用(32位)浮点数将1000万1和20000000相加。如果你先把所有的加起来(得到1000万),然后再加上2000万,你就得到了正确的答案,3000万。但若你们从2000万开始,再加上1000万,你们最终会得到2000万。这是因为,在32位浮点中,2000万+1等于2000万。

假设您使用的是精度为3位的十进制浮点系统。如果按此顺序将正数数字3+3+4+40+70+300+800+1000相加,则得到部分和:

6.
10
50
120
420
1220
2220
最终的结果是精确的和:在任何一步都没有任何近似值

如果按相反的方式相加,则得到部分和:

1800
2100
2170
2210
2210
2210
2210

浮点表示0附近有更高的精度。一般来说,目标是使每个部分和的结果尽可能接近零,以便每个部分和尽可能精确。当对同一符号的数字求和时,这意味着首先将较小的数字相加。

可能的重复数