Por que a função std :: acumulate mostra a soma incorreta de um vetor <double>?
Considere o código a seguir para adicionar todos os elementos de umvector
:
#include<iostream>
#include<algorithm>
#include<numeric>
#include<vector>
using namespace std;
int main(void)
{
std::vector<double> V;
V.push_back(1.2);
V.push_back(3.6);
V.push_back(5.6);
double sum = accumulate(V.begin(),V.end(),0);
cout << "The sum of the elements of the vector V is " << sum << endl;
return 0;
}
Quando eu compilo isso no Cygwin no Windows e o executo, recebo a saída no terminal como
A soma dos elementos do vetor V é 9
oaccumulate
A função parece arredondar todos os números e adicioná-los, o que explicaria a resposta.
Isso está errado com o compilador Cygwin g ++ ou com minha interpretação incorreta doaccumulate
função para adicionar umvector
dodouble
s?