Hi,
I want to sum up all values within a vector of doubles, let say [4.5 8 5 90 24 32 58 1.8 17 25]. The sum is 265.3 which isnt to difficult. But when using the accumulate function I get 264!?

#include <iostream>
#include <math.h>
#include <vector>
#include <numeric>

using namespace std;

int main()
{
	// create a vector
	vector<double> a;
	a.push_back(4.5); a.push_back(8.0); a.push_back(5.0); a.push_back(90.0);
	a.push_back(24.0); a.push_back(32.0); a.push_back(58.0); a.push_back(1.8);
	a.push_back(17.0); a.push_back(25.0);

	for (int i=0;i<a.size();i++)
	{
		// print the vector elements
		cout << a[i] << " ";
	}

	// Sum up values in vector
	double sum = accumulate(a.begin(),a.end(),0);
	// Calculate mean
	double mean = sum/a.size();

	cout << "\nSum:  " << sum << endl;
	cout << "Size: " << a.size() << endl;
	cout << "Mean: " << mean << endl;

	//NOTE: sum = 265.3 !?
}

Output:
4.5 8 5 90 24 32 58 1.8 17 25
Sum: 264 // <-- THIS IS WRONG!?
Size: 10
Mean: 26.4

Thanks for any help.
Andy

Recommended Answers

All 2 Replies

Try this

double sum = accumulate(a.begin(),a.end(),0.0);

Thanks. Works now.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.