float变量不存储浮点值

时间:2016-10-06 04:10:56

标签: c++ c++11

struct score
{
  int math;
  int science;
  int english;
  int history;
  int mapeh;
  int tle;
  int filipino;
};

struct info
{
  string firstName;
  string lastName;
  score grades;
  float average;
  int studentnum;
  int rank;
  bool remark;
};

这是我的代码

存储在主题中的值是:

 85 87 89 90 94 92 95
分别

vector<info> stud;

for( int i=0; i<stud.size(); i++)
{
 stud[i].average=  (stud[i].grades.math
                   +stud[i].grades.science
                   +stud[i].grades.english
                   +stud[i].grades.history
                   +stud[i].grades.mapeh
                   +stud[i].grades.tle
                   +stud[i].grades.filipino)/7;
}

存储在stud [i] .average中的值应该是90.28,而只是90.

我错过了什么?我尝试使用调试器,它显示我90(无小数)

使用setprecision它只会显示90.00而不是90.28

我也尝试将主题的数据类型更改为浮动,但它没有用。

谢谢你。

1 个答案:

答案 0 :(得分:0)

尝试更改为:

stud[i].average=  (stud[i].grades.math
                   +stud[i].grades.science
                   +stud[i].grades.english
                   +stud[i].grades.history
                   +stud[i].grades.mapeh
                   +stud[i].grades.tle
                   +stud[i].grades.filipino)/7.0;

(int)/(float)会为您提供(float)结果。