整数与浮点数的坑

整数与浮点数的坑

问题:
在这里插入图片描述
我第一次写的程序:

#include<stdio.h>
int main(){
	int chi,cun;
	double height;
	printf("您的身高有几尺几寸:");
	scanf("%d %d",&chi,&cun);
	height=(chi+cun/12)*0.3048;
	printf("经转化,您的身高为%f米",height);
	return 0;
}

运行:
在这里插入图片描述
与标准答案不相符,于是我又多试了几次!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现程序存在问题,五尺七寸的运行结果明显不是正确答案1.7018米,而且不管是五尺多少寸,编译运行的结果都是1.5240米,看似是英寸在其中没有起作用,听完视频课老师的解答后找到问题所在,因为height是一个浮点数类型,而chi,cun,12都是整数类型的,表达式中cun/12(cun<12)的结果也只能是整数类型的,将小数部分的数扔了,也就是说本来是0.5833…被舍去小数部分变成0,英寸部分在此并不起作用。有两种解决方案,如下所述。

解决方案一:

浮点数和整数放到一起运算时,C程序会将整数转换成浮点数,然后进行浮点数运算,所以我们将整数12改成浮点数12.0,此时,整数cun与浮点数12.0进行浮点数运算,得到的结果为一个浮点数。

#include<stdio.h>
int main(){
	int chi,cun;
	double height;
	printf("您的身高有几尺几寸:");
	scanf("%d %d",&chi,&cun);
	height=(chi+cun/12.0)*0.3048;
	printf("经转化,您的身高为%f米",height);
	return 0;
}

运行:
在这里插入图片描述
解决方案二:
将chi,cun都定义为浮点数,浮点数cun与整数12进行浮点数运算,得到的结果为一个浮点数。

#include<stdio.h>
int main(){
	double chi,cun,height;
	printf("您的身高有几尺几寸:");
	scanf("%lf %lf",&chi,&cun);
	height=(chi+cun/12)*0.3048;
	printf("您的身高为%f米",height);
	return 0;
}

在这里插入图片描述
小细节:

1.int 整数
输出:printf("%d",…);
输入:scanf("%d",…);
2.double 带小数点的数
输出:printf("%f",…);
输入:scanf("%lf",…);

发布了4 篇原创文章 · 获赞 2 · 访问量 122

猜你喜欢

转载自blog.csdn.net/weixin_45145550/article/details/103227931
今日推荐