作业帮 > 综合 > 作业

C语言四舍五入保留两位小数

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/27 19:30:11
C语言四舍五入保留两位小数
#include
main()
{
double a;
printf("请输入一个四位小数:\n");
scanf("%d",&a);
a*=100;
a+=0.5;
(int)(a);
a/=100;
printf("结果是:%2f\n",a);
}

可以这样写吗?哪里错了?
scanf("%d",&a);改为:
scanf("%lf",&a);

printf("结果是:%2f\n",a);改为:
printf("结果是:%.2f\n",a);

%2f 是按2位输出,%.2f是按小数部分保留两位输出,一失足成千古恨啊.小心呀
再问: 为什么要加这个 点 啊??新手求解
再答: 额 刚刚修改了 贴上了。
再问: 那我改成 ("%lf \n",a);这个可以吗?在(int)(a)那里已经取整了,再除100后,是不是也应该是两位小数?
再答: 额 应该吧 不过那个0.5不是白加了么。 额 原来0.5是用来四舍五入的啊,何等的失态啊。 好强啊。
再问: 为什么会白加呢?不是很懂,这样执行起来确实不行。
再答: printf 的话 没有lf的吧,只有浮点输出而已,那你改成 %f 试试。
再问: 也不行,而且后边带好几个零,小数点后面六位,不是两位,我想知道为什么?
再答: 额 那你还是用 %.2f 好了,估计是输出的默认格式吧 那你再输出个1.0看看 看看后面是不是还是有好多个0 调试了下: (int)(a);//这一句没有预期的效果,该改为: a=int(a);//具体原因,你自己想吧,有好处的哦。 至于小数后面的0的问题,无能为力啊,只能用%.2f了