c语言的关于 : 对一个double型数据进行四舍五入运算
include<stdio.h>main(){doublea;printf("请输入一个小数:");scanf("%lf",&a);(a*100+0.5)/100;pri...
include<stdio.h>
main()
{
double a;
printf("请输入一个小数:");
scanf("%lf",&a);
(a*100+0.5)/100;
printf("%.2f",a);
}
include<stdio.h>
main()
{
double a,b;
printf("请输入一个小数:");
scanf("%lf",&a);
b=(a*100+0.5)/100;
a=b;
printf("%.2f",a);
}
这两个结果不同,第一个能实现4舍5入,第二个不能不管是否大于5都产生进位,,,为什么会这样啊 要求保留2位小数 ,第3位4舍5入。 展开
main()
{
double a;
printf("请输入一个小数:");
scanf("%lf",&a);
(a*100+0.5)/100;
printf("%.2f",a);
}
include<stdio.h>
main()
{
double a,b;
printf("请输入一个小数:");
scanf("%lf",&a);
b=(a*100+0.5)/100;
a=b;
printf("%.2f",a);
}
这两个结果不同,第一个能实现4舍5入,第二个不能不管是否大于5都产生进位,,,为什么会这样啊 要求保留2位小数 ,第3位4舍5入。 展开
展开全部
展开全部
貌似我的VC6.0直接输出printf("%.2f",a);就自动四舍五入了
你的第一个a的值没有任何改变,你只是用了a去计算,但是并没有对a重新赋值。
第二个,你对a重新赋值了,经过你的式子之后,实际上是把小数点第三位的数加了五,
b=(a*100+0.5)/100;这一句拆开算就是(a*100)/100+0.5/100即a+0.005,所以才会不管你的原数是什么,程序执行后都会进位。
你的第一个a的值没有任何改变,你只是用了a去计算,但是并没有对a重新赋值。
第二个,你对a重新赋值了,经过你的式子之后,实际上是把小数点第三位的数加了五,
b=(a*100+0.5)/100;这一句拆开算就是(a*100)/100+0.5/100即a+0.005,所以才会不管你的原数是什么,程序执行后都会进位。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个(a*100+0.5)/100;这句没有意义,你的本意应该是a=(a*100+0.5)/100;
第一个4舍5入是printf函数实现的,不是你自己实现的。
第二个也一样,printf函数实现了4舍5入,因为你加了0.5,所以总是进入。比如你输入2.001,计算后a=2.006,打印出来就是2.01.
第一个4舍5入是printf函数实现的,不是你自己实现的。
第二个也一样,printf函数实现了4舍5入,因为你加了0.5,所以总是进入。比如你输入2.001,计算后a=2.006,打印出来就是2.01.
追问
那这个题应该怎样写程序。可以直接输出吗?
追答
如果你想显示时四舍五入,就直接printf了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询