【C】身高5尺7寸?(浮点数)

  • 美国人固执地使用英制计量单位,他们习惯用几尺几寸 (英尺英寸) 来报自己的身高。如果遇到一个美国人告诉你他是5尺7寸,他的身高应该是一米几呢?
  • (5+7=12)x0.3048 =1.7018米

代码

#include<stdio.h>
int main()
{
printf("请分别输入身高的英尺和英寸,");
int foot,inch;
scanf("%d %d",&foot,&inch);
printf("身高是%f米。\n",((foot + inch / 12) * 0.3048));
return 0;
}

输出

请分别输入身高的英尺和英寸,5 7
身高是1.524000米。

--------------------------------
Process exited after 3.079 seconds with return value 0
请按任意键继续. . .

不对吧?根据题目来说,输出应该是1.7018米,但为什么输出是1.524米呢

解惑

原因是这样的,在C语言中,整数与整数的运算结果也是整数,也就是说inch/12的结果在刚刚的运行中等于了0。也就是说结果只取整数部分,不会四舍五入!

解决方案

#include<stdio.h>
int main()
{
printf("请分别输入身高的英尺和英寸,");
int foot,inch;
scanf("%d %d",&foot,&inch);
printf("身高是%f米。\n",((foot + inch / 12.0) * 0.3048));
return 0;
}

把12改成12.0,当浮点数和整数放到一起运算时,C会将整数转换成浮点数,然后进行浮点数的运算。

ChatGPT总结

当使用C语言进行英尺英寸转换为米的计算时,需要注意整数除法的特性。在C语言中,整数与整数进行除法运算时,结果将会被截断为整数部分,而不进行四舍五入。这导致在一开始的代码中,计算出的结果不符合预期。

为了解决这个问题,可以通过将其中一个操作数改为浮点数,从而触发C语言的隐式类型转换。具体来说,可以将除数12改为12.0,这样整数除法会变为浮点数除法,计算结果将包含小数部分。

以下是问题和解决方案的要点总结:

问题要点:

  • 在C语言中,整数与整数进行除法运算时,结果会被截断为整数部分,不会进行四舍五入。
  • 原始代码中的结果错误是因为整数除法截断造成的。

解决方案要点:

  • 将其中一个操作数改为浮点数,可以触发C语言的隐式类型转换。
  • 通过将除数12改为12.0,实现整数除法变为浮点数除法。
  • 隐式类型转换使得计算结果包含小数部分,得到正确的输出结果。

这个总结可以帮助他人理解在C语言中处理整数和浮点数运算时需要注意的问题和解决方法。

© 版权声明
THE END
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容