盼望流星 发表于 2020-7-1 23:33:16

关于s1e8课后题中float和double的小问题

#include<stdio.h>
#include<math.h>

int main()
{
      float i,j;

      printf("请输入华氏度:");
      scanf("%f",&i);

      j = (i-32)*5/9;
      printf("转换为摄氏度是:%.2f\n",j);

      return 0;
}

为什么代码中仅仅是把float换成double输出就不一样了,double不是比float精度更高嘛?

lll_jh888 发表于 2020-7-1 23:45:04

转换成double时有没有scanf中的f变成lf

盼望流星 发表于 2020-7-1 23:54:37

顺便再问一个问题
#include<stdio.h>

int main()
{
      char a;
      float b,c;

      printf("请输入您的姓名:");
      scanf("%s",a);

      printf("请输入您的身高(cm):");
      scanf("%f",&b);

      printf("请输入您的体重(kg):");
      sacnf("%f",&c);
      printf("==============正在为您转换==============\n");

      b = b/2.54;
      b = c/0.45359237;
      printf("%s的身高是%.2f(in),体重是%.2f(lb)\n",a,b,c);



      return 0;
}

输出结果为/tmp/ccRnKw1i.o: In function `main':
wrok2.c:(.text+0x6d): undefined reference to `sacnf'
collect2: ld returned 1 exit status

lll_jh888 发表于 2020-7-2 00:02:19

盼望流星 发表于 2020-7-1 23:54
顺便再问一个问题

输出结果为

第十五行scanf打成了sacnf......

BIGLUO 发表于 2020-7-2 02:45:39

// 将输入的
%f
// 改成
%lf

405794672 发表于 2020-7-2 08:25:09

盼望流星 发表于 2020-7-1 23:54
顺便再问一个问题

输出结果为

提示上面说了,并用引号标出了sacnf。要不是这个提,我还没发现。另外,你的代码有误。b用体重除以了2.54,然后又给它赋值为c/0.45359237。那么b=b/2.54就没有任何意义了。
我猜你是想C=C/0.45359237吧?

盼望流星 发表于 2020-7-2 20:10:27

lll_jh888 发表于 2020-7-1 23:45
转换成double时有没有scanf中的f变成lf

原来如此

盼望流星 发表于 2020-7-2 20:12:38

lll_jh888 发表于 2020-7-2 00:02
第十五行scanf打成了sacnf......

啊啊啊啊。。。晕了我

盼望流星 发表于 2020-7-2 20:13:12

405794672 发表于 2020-7-2 08:25
提示上面说了,并用引号标出了sacnf。要不是这个提,我还没发现。另外,你的代码有误。b用体重除以了2.54 ...

发现了。。。。

盼望流星 发表于 2020-7-2 20:15:07

BIGLUO 发表于 2020-7-2 02:45


为什么a【256】后面得写个256啊,不写不行吗
页: [1]
查看完整版本: 关于s1e8课后题中float和double的小问题