Почему функция std :: аккумулирует неверную сумму вектора <double>?

Рассмотрим следующий код для добавления всех элементовvector:

#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;
}

Когда я компилирую это на Cygwin под Windows и запускаю его, я получаю вывод в терминале как

Сумма элементов вектора V равна 9

accumulate Кажется, функция округляет все числа и складывает их, что и объясняет ответ.

Это что-то не так с компилятором Cygwin G ++, или мое неверное истолкованиеaccumulate функция для сложенияvector изdoubles?

Ответы на вопрос(4)

Ваш ответ на вопрос