这是我的代码,请帮帮我,百分比显示0.00而不是我想要的。
我想计算百分比,正如您将通过以下代码知道这一点......
#include<stdio.h>
#include<conio.h>
int main()
{
int marks[2][3]={80,70,50,90,50,60};
int total[2]={0,0};
float per[2]={0.0f,0.0f};
for (int x=0;x<2;x++)
{
for(int y=0;y<3;y++)
{
printf("[%d][%d]=%d\t",x,y,marks[x][y]);
total[x]=total[x]+marks[x][y];
per[x]=total[x]/300*100;
}
printf("total [%d]=%d",x,total[x]);
printf("\n\npercentage [%d]=%2.2f \n",x,per[x]);
putchar('\n');
}
getch();
return 0;
}
答案 0 :(得分:5)
在表达式
中total[x]/300*100
所有涉及的值都是整数,因此在分配给浮点数组条目之前会截断结果。
改为例如
total[x]/300.0f*100.0f
答案 1 :(得分:2)
将per[x]=total[x]/300*100;
替换为per[x]=total[x] * 1.0f / 300 * 100;
你需要在除法之前将int转换为double / float,以确保不会因为截断整数除法而失去精度。
per[x]=total[x]/300*100; /* Assuming total[x] = 280 */
per[x]=280/300*100;
per[x]=(280/300)*100; /* Associativity is left-to-right */
per[x]=0*100;
per[x]=0;