精度的问题(欢迎小伙伴们来发表意见)
我的代码是这样的:#include <stdio.h>
int main()
{
float height;
long double output;
scanf("%f",&height);
output = height * 2.54;
printf("Your height is %lf",output);
return 0 ;
}
键盘输入的是:170.2
输出结果是:
Your height is -461456749483175900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000
正确答案是:
#include <stdio.h>
int main()
{
float height;
scanf("%f",&height);
printf("Your height is %lf",height * 2.54);
return 0;
}
键盘输入的是:170.2
输出结果是:Your height is 432.307992
我一直很懵,我只不过是把答案的一步完成分成了好几步,就错了?有人说是精度的问题,但是我试了一下也没有错呀。
大家各抒己见,我会一 一尝试一下(现在想不出为什么错了)
最后,那个数据用计算器算出来的是432.308(如果可能的话,帮把这个原因说一说) 跟精度没关系呀,把long去掉
#include <stdio.h>
int main()
{
float height;
double output;
scanf("%f",&height);
output = height * 2.54;
printf("Your height is %lf",output);
return 0 ;
} 本帖最后由 大马强 于 2021-8-2 10:44 编辑
你的 long double output; 改成 float output,然后输出改改 printf("Your height is %.3lf",output);
这样输出就一样了
计算机精度问题,这点误差能接受的{:10_256:}
#include <stdio.h>
int main()
{
float height;
double output;
scanf("%f",&height);
output = height * 2.54;
printf("Your height is %.3lf",output);
return 0 ;
}
https://static01.imgkr.com/temp/899c4e362beb429999bbb489fcc2c422.jpg
页:
[1]