为什么要把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不是整数吗 因为result 是 float类型的。整型除不会有小数点的。不想转换的可以这样改 result = (i-32)*5*1.0/9 因为c中整形数据进行运算只能得到整形数据 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]