【发布时间】:2011-09-08 15:26:43
【问题描述】:
在下面的代码中,当我将输入作为 1 10 2 1 2 2 时,sum 打印为 52,sum3 打印为 31.200001,而它应该是 31.200000
int main(){
int t,n,i,a[2000],m,j,f;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
scanf("%d",&f);
for(i=0;i<f;i++){
scanf("%d",&a[i]);
}
scanf("%d",&m);
if(n!=0){
int sum=n*(n+1)/2;
int sum2=0;
for(j=0;j<i;j++){
sum2+=a[j];
}
sum-=sum2;
printf("%d\n",sum);
float sum3;
if(n%2==0) sum3=(1.0-2.0*m/n)*sum;
else sum3=(1.0-2.0*m/(n+1))*sum;
printf("%f\n",sum3);
}
else printf("0.0000\n");
}
return 0;
}
【问题讨论】:
-
不要在没有充分理由的情况下将
float用于浮点数:改用double。 “老师告诉我们使用float”是NOT在试图说服她之前使用float的好理由;如果她坚持……哦,好吧……
标签: c floating-point