小伊布 发表于 2020-5-8 21:52:32

为什么要把int换成float

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

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

结果小数点后面不计算,全是0,比如输入45,输出7.00,,,,必须把int换成float浮点型,可是45不是整数吗

chxchxkkk 发表于 2020-5-8 22:13:11

因为result 是 float类型的。整型除不会有小数点的。不想转换的可以这样改 result = (i-32)*5*1.0/9

BngThea 发表于 2020-5-9 06:33:26

因为c中整形数据进行运算只能得到整形数据

skyddy 发表于 2020-5-9 09:44:48

c语言在计算时,如果类型不一致会进行类型提升(低精度类型会转为高精度,比如int与double 计算 int会转换为double类型再计算)
还有运算符有优先级,result = (i - 32) * 5 / 9; 先算等号右边的表达式,发现表达式结果与目标类型 result不匹配 会对表达式结果自动进行强转
(i - 32) * 5 / 9 结果一定为整型。 强转一下就是后面补0 变为x.00了
如果想要结果保留小数 在表达式中将一个数字变为高精度 就可以了
int main() {
    int i;
    float result;

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

    result = (i - 32) * 5 / 9.00;

    printf("转换为摄氏度是:%.2f\n", result);

    return 0;
}
页: [1]
查看完整版本: 为什么要把int换成float