作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/05 21:50:56
从键盘读入一个实数,对其进行四舍五入处理,要求精确到到小数点后两位.
#include
void main()
{
float x;
int y;
printf("请输入一个实数:\n");
scanf("%f",&x);
y=x*1000;
if(y%10
可以肯定的告诉你,你找的答案肯定不对.
不信你输2.225看一下,结果还是2.22

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

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

#include
void main()
{
double x;
int y;
printf("请输入一个实数:\n");
scanf("%lf",&x);
y=x*1000;
if(y%10
再问: 只保留小数点后面两位 请问为什么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