kkk纯粹 发表于 2021-3-11 19:34:32

sle8课后作业动动手1

为什么,我这int i,然后出来的结果就是7.00,不是7.22,我对比了下和小甲鱼的程序,就只有一个int和float的区别,45用int不是挺好的嘛

kkk纯粹 发表于 2021-3-11 19:36:09

这是我的代码#include <stdio.h>

int main()
{
        int i;
        float j;
        printf("请输入华氏度:");
        scanf("%d",&i);
        j=(i-32)*5/9;
        printf("转换为摄氏度是;%.2f\n",j);
        return 0;
}

yuedong 发表于 2021-3-11 19:45:37

因为你的 i 定义为了整型
所以(i-32)*5/9的结果默认是整型d
j=(i-32)*5/9;这一步就相当于将(i-32)*5/9计算得到的结果进行了强制转化为float型
看个例子,这段代码中k的值

#include <stdio.h>

int main()
{
      int i,k;
      float j;
      printf("请输入华氏度:");
      scanf("%d",&i);
      k = 5/9;
      printf("%d\n",k);
      j=(i-32)*5/9;
      printf("转换为摄氏度是;%.2f\n",j);
      return 0;
}

yuedong 发表于 2021-3-11 19:47:12


#include <stdio.h>

int main()
{
      int i;
      float j;
      printf("请输入华氏度:");
      scanf("%d",&i);
      
      j=(i-32)*5/9.0;
      printf("转换为摄氏度是;%.2f\n",j);
      return 0;
}

yuedong 发表于 2021-3-11 19:48:52

yuedong 发表于 2021-3-11 19:47


这样也可以,就是让算式中存在了不是整型的数,结果也就不会再默认成整型了
但是你想一下温度什么的有小数不是很正常吗,例如37.2°,所以还是float型比较合适

kkk纯粹 发表于 2021-3-11 20:38:37

yuedong 发表于 2021-3-11 19:48
这样也可以,就是让算式中存在了不是整型的数,结果也就不会再默认成整型了
但是你想一下温度什么的有小 ...

#include <stdio.h>

int main()
{
      float k;
      k = 3/2;
      printf("%.2f\n",k);
      return 0;
}
那你看,我这里,出来的结果是1.00,我把那个k=3/2改成k=3/2.0或者k=3.0/2,结果都能出1.50,我想是不是计算的结果,只要式子中有一个数是小数,结果就能出小数,就好像上面的代码,j=(i-32)*5/9,把任何一个数改成小数就能出正确的结果,32.0或5.0或9.0,其实float i 也相当于把i确定为小数。我这样想的。

kkk纯粹 发表于 2021-3-11 20:39:14

yuedong 发表于 2021-3-11 19:48
这样也可以,就是让算式中存在了不是整型的数,结果也就不会再默认成整型了
但是你想一下温度什么的有小 ...

谢谢
页: [1]
查看完整版本: sle8课后作业动动手1