c语言下面程序,执行四舍五入,保留两位小数怎么不对

#include <stdio.h>
main()
{double a,b;
scanf("%lf",&a);
b=((int)(a*100 + 0.5))/100;
printf ("%.2lf\n",b);
}

这句:b=(int)……/100;会使得等号的右边的值为一个int值,然后int会被转化为double,所以会得到一个 整数.00000000.最后输出 整数.00.
把(int)去掉试试看追问

不可以的、b=(int)(a*100 + 0.5)/100.0;这样才可行,不管怎样、还是谢谢你们

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-07
呵呵呵呵呵呵呵呵呵kkkkkkkk,,,,,,,,,,,,,,
第2个回答  2013-06-07
b被强制转换成int类型的了
相似回答