【发布时间】:2016-11-06 19:44:06
【问题描述】:
我正在尝试编写一个简单的 C 程序,它以米为单位获取用户的输入,并以公里、码和英里为单位打印输出四舍五入到小数点后 4 位。
我用过这个1米=0.001公里=1.094码=0.0006215英里
当我写这个时,我得到了预期的输出:
#include <stdio.h>
int main()
{
int m;
float km, y, mi;
scanf("%d",&m);
km=(m*0.001);
y=(m*1.094);
mi=(m*0.0006215);
printf("%.4f\n%.4f\n%.4f",km,y,mi);
return 0;
}
输出:
0.1000
109.4000
0.0622
但是,当我写这个时,我得到了第三个输出错误:
#include <stdio.h>
int main()
{
int m;
scanf("%d",&m);
printf("%.4f\n%.4f\n%.4f",(m*0.001),(m*1.094),(m*0.0006215));
return 0;
}
输出:
0.1000
109.4000
0.0621
您能帮我找出造成这种差异的原因吗?
Edit-1
这里我输入了 100。
float y=100*0.0006215;
printf("%f",y);
输出 0.062150
还有这个
printf("%f",100*0.0006215);
也给出了输出 0.062150
Edit-2
float y=100*0.0006215;
printf("%.4f",y);
输出0.0622
同时:
printf("%.4f",100*0.0006215);
输出0.0621
而在 Edit-1 中都显示相同的输出。
【问题讨论】:
-
我无法关联“浮点数学是否损坏?”我的问题。请查看编辑。
标签: c variables printf difference