从键盘读入一个实数,对其进行四舍五入处理,要求精确到到小数点后两位。

#include<stdio.h>voidmain(){floatx;inty;printf("请输入一个实数:\n");scanf("%f",&x);y=x*1000;... #include<stdio.h>
void main()
{
float x;
int y;
printf("请输入一个实数:\n");
scanf("%f",&x);
y=x*1000;
if(y%10<=4)
y=y-y%10;
else
{
y=y+10;
y=y-y%10;
}
printf("该实数,四舍五入保留两位小后是%.2f\n",x);
}
这是找的答案,它的运算过程只用了y,输出的却是x,而且程序运行正确,请问这是为什么。。
展开
 我来答
xcl706
2014-06-26
知道答主
回答量:32
采纳率:0%
帮助的人:23.2万
展开全部

其实x一直都没有变,只是在printf函数中的格式控制符%.2f会将x以四舍五入保留两位小数输出而已!

下面给出截图说明.


 这个在c语言的书里应该有提到的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
艾普斯
2024-07-18 广告
稳频稳压电源哪家好?艾普斯电源(苏州)有限公司开始专业研发、制造及营销交流稳压电源,满足全球电子及信息业对电源设备日益蓬勃的市场需求。迄今为止,业已发展成为交流不间断电源、稳压电源、变频电源、中频航空- 军事专用电源、直流电源、逆变电源等产... 点击进入详情页
本回答由艾普斯提供
chinazhsj
推荐于2017-09-09 · TA获得超过391个赞
知道小有建树答主
回答量:96
采纳率:0%
帮助的人:141万
展开全部
可以肯定的告诉你,你找的答案肯定不对。
不信你输2.225看一下,结果还是2.22

原程序一直在对Y处理,结果最后都没有返给X。肯定不对。
为什么可能会出现正确的结果,这个就很复杂了,要从浮点的存储说起了。
我现在也还不是很了解。
浮点数在计算(特别是和整型混合计算时)、输入和输出的时候都可能有精度的丢失。
具体的我也不是很懂,你可以自行去研究一下。

比较完美的程序应该要用DOUBLE类型,提高精度。
就算有返加给X,用FLOAT类型还是会出错。很难理解。

#include<stdio.h>
void main()
{
double x;
int y;
printf("请输入一个实数:\n");
scanf("%lf",&x);
y=x*1000;
if(y%10<=4)
y=y-y%10;
else
{
y=y+10;
y=y-y%10;
}

x=(double) y/1000;
printf("该实数,四舍五入保留两位小后是%.2lf\n",x);
}
追问
只保留小数点后面两位  请问为什么float和double有区别?我用float测试2.225还是错的。而且好像就就2.xxx这一类数不同,其他大部分都可以运行= =
追答
float 单精度,只有4个字节
double双精度,有8个字节。精度更高啊

有的可能,有的不行,这跟浮点数的存储和计算都有关系的。我也不是很懂。

这个程序肯定要用DOUBLE类型的,FLOAT肯定不行。

你用这个程序试一下
#include
void main()
{
float x;
printf("请输入一个实数:\n");
scanf("%f",&x);
printf("%f\n",x);
}

这样不进行任何处理,输入某些数据,float类型输出的数据都不一样。
比如55.55 输出55.549999
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式