小数没有正确显示c ++

时间:2016-04-07 15:51:57

标签: c++

大家好,所以我的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左右等等。 但我的输出是

输出: 50.0000

请帮助

2 个答案:

答案 0 :(得分: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 :(得分:0)

你应该将总和投入浮动。当你执行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;