可能重复:
C++ 浮点精度问题
我遇到了一个问题,即使用 std::accumulate 确定三者中最精确的方法来计算向量元素的总和,这只能是正数。
1)
double sum(vector<float> &v)
{
return accumulate(v.begin(), v.end(), 0.0);
}
2)
double sum(vector<float> &v)
{
sort(v.begin(), v.end());
return accumulate(v.begin(), v.end(), 0.0);
}
3)
double sum(vector<float> &v)
{
sort(v.begin(), v.end(), greater<float>());
return accumulate(v.begin(), v.end(), 0.0);
}
这是一种求职面试问题,这就是为什么我得到这三种特殊的方法来计算总和。我在网上做了很多搜索,但无法弄清楚其中的区别。请各位大侠帮我理解一下好吗?