kjj2931 发表于 2021-8-2 10:30:18

精度的问题(欢迎小伙伴们来发表意见)

我的代码是这样的:
#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(如果可能的话,帮把这个原因说一说)

青出于蓝 发表于 2021-8-2 10:36:29

跟精度没关系呀,把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:37:59

本帖最后由 大马强 于 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]
查看完整版本: 精度的问题(欢迎小伙伴们来发表意见)