假设我们10^(-15)在c ++中有一个小(大约)双数的数组.例如,如果我们按顺序计算此数组中的数字总和
double sum = 0;
for (int i = 0; i < n; i++) sum+=array[i];
Run Code Online (Sandbox Code Playgroud)
我们得到一些价值x.
但是如果我们将一个数组分成几个部分,然后计算每个部分的总和,然后我们将所有的部分和加在一起,我们得到一些值x2,这接近x但不完全x.所以我在计算总和方面已经失去了成功.
有人知道如何通过将这些数字划分为某些部分而不会失去准确性来计算小双数的总和吗?
我有以下代码,它返回双向count量向量中最后一个元素的总和foo:
return std::accumulate(foo.rbegin().base() - std::min(count, foo.size()), foo.rbegin().base(), 0);
Run Code Online (Sandbox Code Playgroud)
但它忽略了任何小数部分.为什么?