伪装灬 发表于 2020-2-18 20:37:09

为什么用float和double俩结果不一样?

#include <stdio.h>

int main()
{
      float cel,fah;
      printf("请输入华氏度:");
      scanf("%f", &fah);

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

      return 0;
}
这里面的fah换成double结果会不一样,但是不知道为什么??

zltzlt 发表于 2020-2-18 20:38:32

fah 换成 double?

zltzlt 发表于 2020-2-18 20:40:44

float 和 double 两者的精度不一样,结果当然不一样(double 表示的浮点数更精确)

一个账号 发表于 2020-2-18 20:43:32

float 是浮点型,double 是双精度浮点型,精度不一样。

伪装灬 发表于 2020-2-18 20:53:07

zltzlt 发表于 2020-2-18 20:38
fah 换成 double?

对,是精度的原因吗??结果完全不一样呀

伪装灬 发表于 2020-2-18 20:53:44

一个账号 发表于 2020-2-18 20:43
float 是浮点型,double 是双精度浮点型,精度不一样。

我觉得不是精度的原因吧,因为差太多了

zltzlt 发表于 2020-2-18 20:55:21

伪装灬 发表于 2020-2-18 20:53
对,是精度的原因吗??结果完全不一样呀

我再调试了一下,觉得不太像精度的问题{:10_266:}收回我刚刚说的话

伪装灬 发表于 2020-2-18 20:56:16

zltzlt 发表于 2020-2-18 20:55
我再调试了一下,觉得不太像精度的问题收回我刚刚说的话

嗯对的,我就是不知道啥原因

拖延症大叔 发表于 2020-2-19 00:56:14

是精度的问题,上面定义换了下面%f也换成%lf就一样了

良弓无箭 发表于 2020-2-19 07:40:29

如果用double定义的话,scanf中必须是%lf,否则就会出现一个不正常的数据。
正常修改如下:
#include <stdio.h>

int main()
{
      double cel,fah;
      printf("请输入华氏度:");
      scanf("%lf", &fah);

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

      return 0;
}
页: [1]
查看完整版本: 为什么用float和double俩结果不一样?