2015-04-23 90 views
0

我宣布int main()开头的平均值为double。这段代码编译并运行良好,除了当它计算平均值时它将它作为int返回。这项任务的目标是创建并填充矢量,然后计算平均值并找到中值。我被困在这一部分。有任何想法吗??C++:为什么我的平均值返回为int而不是double?

谢谢,我感谢任何帮助。

#include <iostream> 
#include <vector> 
#include <cmath> 
#include <numeric> 
using namespace std; 

int main() 
{ 
    int n; 
    double average=0; 

    cout<<"Vector Length?: "<<endl; 
    cin>>n; 
    vector<int> data; 
    srand(time(NULL)); 

    for (int i=0; i<n; i++) 
    { 
     data.push_back(rand()%10+1); 
    } 
    for (int i=0; i<data.size(); i++) 
    { 
     cout<<"Vector: "<<i<<" "<< data[i]<<endl; 
    } 

    average = accumulate(data.begin(), data.end(), 0)/data.size(); 

    cout<<"Average: "<<average<<endl; 

    system ("pause"); 

    return 0; 





} 
+1

http://stackoverflow.com/questions/6101084/division-in-c-not-working-as-expected你会接受,作为重复? – jogojapan

+0

这可能会帮助我弄明白。非常感谢! – DarthVoid

回答

5

类型的初始值参数的到std::accumulate被推导出int。所以积累的结果也是一个int然后你进行整数除法。

把上面一行

average = accumulate(data.begin(), data.end(), 0.0)/data.size(); 
//            ^^^ 

现在,通过accumulate返回的类型将是double

+0

啊......当然。谢谢你的帮助! – DarthVoid

相关问题