c语言程序哪里错了:一个数小数点后面保留三位有效数字,看第四位四舍五入

#include"stdio.h"
main()
{float a;
scanf("%f",&a);
a=((int)(a*1000+0.5))/1000;
printf("%f\n",a);
}

a=((int)(a*1000+0.5))/1000 这句 你已经把a 强制转化成int型 了 当然就是整数形式了
w267us88 正解
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-22
a=((int)(a*1000+0.5))/1000.0;追问

真的好用了,能解释一下为什么吗?

追答

你之前分母与分子类型都是int类型,所以运算结果也是int
分母与分子至少有一个是float类型时,运算结果是float类型,实际值类型强制转为左侧变量类型

本回答被提问者采纳
第2个回答  2013-03-22
#include"stdio.h"
main()
{
float a,c;
int b;
scanf("%f",&a);
b=(int)((a*1000+0.5));
c=(float)(b);
a=c/1000;
printf("%f\n",a);
}
这样应该能对

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网