我的一个代码也有相同的问题,#include <stdio.h>
int main()
{
int total;
float sum=0;
printf("请输入学生人数\n");
scanf("%d",&total);
float mark[total];
printf("请输入每个学生的成绩\n");
for(int count=0;count<total;count++)
{
scanf("%f",&mark[count]);
sum=sum+mark[count];
}
printf("sum = %f\n",sum);
double result=(double)sum/total;
printf("平均成绩为 %.20lf 分!\n",result);
return 0;
}
就这个小代码,请输入学生人数
5
请输入每个学生的成绩
150
149
148
147
145
sum = 739.000000
平均成绩为 147.80000000000001000000 分!
--------------------------------
Process exited after 12.42 seconds with return value 0
请按任意键继续. . .
他是会在小数点后有偏差的,好像说是跟计算机存储小数的方式有关,具体我也不清楚。(可能有错大佬勿喷 )
你改成double应该影响就不大,可以接受![](static/image/smiley/ARU/aru-1x-1_037.png) |