2016-04-07 12 views
0

ちょっとみんな私のC++コードが10進数値を正しく表示していません。ここで私はなど 、小数が正しく表示されないC++

int sum = 0; 
for (vector<int>::iterator it = vint.begin(); it != vint.end(); it++) 
{ 
    sum += *it; 
} 
float average = (sum/10000); 
cout.precision(5); 
cout.setf(std::ios::fixed); 
cout << "Average: " << average << endl; 

合計がその通常約506782私のコードのランダムな原因であるが、持っているものだが、私の出力に含まです

OUTPUT: 50.0000

助けてください

+0

インターネットで「C++整数除算」を検索してください。たとえば、1/3 == 0; 1.0/3.0 == 3.333333333333である。 –

答えて

1

問題は、整数除算を実行していることです(sum10000は両方とも整数です)。結果は常に切り捨てられた整数(例えば、5/2 == 2)になります。 10000定数を浮動小数点定数(10000.0f)にすると、代わりに浮動小数点除算が実行されます。これで修正する必要があります。

int sum = 0; 
for (vector<int>::iterator it = vint.begin(); it != vint.end(); it++) { 
    sum += *it; 
} 
float average = (sum/10000.0f); 
cout.precision(5); 
cout.setf(std::ios::fixed); 
cout << "Average: " << average << endl; 
+1

回答の中に* how *を記述したテキストを含める必要があります。人々が学ぶのに役立たないので、答えを出すだけではありません。 –

+0

私はまだ編集中だと知っています。 – tonisuter

0

合計をfloatにキャストする必要があります。 sum/10000を実行すると、小数点が切り捨てられた整数になります。

int sum = 0; 
for (vector<int>::iterator it = vint.begin(); it != vint.end(); it++) 
{ 
    sum += *it; 
} 
float average = ((float)sum/10000); 
cout.precision(5); 
cout.setf(std::ios::fixed); 
cout << "Average: " << average << endl; 
関連する問題