为什么用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结果会不一样,但是不知道为什么?? fah 换成 double? float 和 double 两者的精度不一样,结果当然不一样(double 表示的浮点数更精确) float 是浮点型,double 是双精度浮点型,精度不一样。 zltzlt 发表于 2020-2-18 20:38
fah 换成 double?
对,是精度的原因吗??结果完全不一样呀 一个账号 发表于 2020-2-18 20:43
float 是浮点型,double 是双精度浮点型,精度不一样。
我觉得不是精度的原因吧,因为差太多了 伪装灬 发表于 2020-2-18 20:53
对,是精度的原因吗??结果完全不一样呀
我再调试了一下,觉得不太像精度的问题{:10_266:}收回我刚刚说的话 zltzlt 发表于 2020-2-18 20:55
我再调试了一下,觉得不太像精度的问题收回我刚刚说的话
嗯对的,我就是不知道啥原因 是精度的问题,上面定义换了下面%f也换成%lf就一样了 如果用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]