|
发表于 2022-8-1 00:29:16
|
显示全部楼层
我的一个代码也有相同的问题,- #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应该影响就不大,可以接受 |
|