为何C语言计算平均油耗未得到正确浮点数结果?
问题原因与解决方案
这是整数除法特性导致的计算错误。
你代码中的distance和noOfLiters都是int(整数)类型,在C语言中,两个整数执行除法运算时,会遵循整数除法规则:只保留商的整数部分,直接舍去小数部分。比如你输入的5(燃油量)除以50(距离),整数除法的结果是0,之后把这个0赋值给float类型变量,最终输出就是0.000000。
修正方法
有两种简单的方式可以解决这个问题:
方法1:强制类型转换操作数
在除法运算前,将其中一个整数操作数强制转换为float类型,这样C语言会自动将另一个操作数也转换为float,执行浮点数除法:
float avgFuelConsumption = (float)noOfLiters / distance;
或者转换除数:
float avgFuelConsumption = noOfLiters / (float)distance;
方法2:将变量声明为float类型
直接把distance和noOfLiters声明为float类型,这样输入后直接执行浮点数除法:
#include <stdio.h> int main(){ float distance; float noOfLiters; printf("Enter The distance:"); scanf("%f",&distance); printf("Enter The Fuel Spent:"); scanf("%f",&noOfLiters); float avgFuelConsumption = noOfLiters/distance; printf("Average Fuel Consumption : %f", avgFuelConsumption); }
修正后输出
使用第一种方法修改后,输入50和5的输出结果为:
Enter The distance:50 Enter The Fuel Spent:5 Average Fuel Consumption : 0.100000
内容的提问来源于stack exchange,提问作者Sandeepa_Dilshan_Alagiyawanna
相关产品推荐
相关产品推荐

