添加大量浮点数

时间:2018-02-26 01:45:27

标签: floating-point

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

2 个答案:

答案 0 :(得分:1)

假设您使用的是精度为3位的十进制浮点系统。如果您按此顺序添加数字3 + 3 + 4 + 40 + 70 + 300 + 800 + 1000,您将获得部分总和: 1800 2100 2170 2210 2210 2210 2210 最终结果是确切的总和:在任何步骤都没有任何近似值。

如果以相反的方式添加它们,则会获得部分总和: struct point2 xy::Array{Float64,1} end

浮点意味着在0附近有更多的精度。通常,目标是使每个部分和的结果尽可能接近零,以便每个部分和尽可能准确。当对相同符号的数字求和时,这意味着首先添加较小的数字。

答案 1 :(得分:0)

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