2015-04-23 93 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

相關問題