You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中使用int参数的函数返回float值却输出0.0000的问题

整数除法导致float返回值为0的问题解决

问题原因

函数内的运算都是整数类型运算:stick_length*human_weight得到160(int类型),car_weight+human_weight得到1480(int类型),整数除法会直接截断小数部分,160/1480的结果是0,再转换为float返回就是0.0,所以最终输出0.0000。

解决方案

只需要让运算过程中触发浮点数计算即可,以下两种方式都可以:

方式一:强制转换运算数为float

将分子或分母中的任意一个运算数强制转换为float,整个表达式就会按浮点数规则计算:

float lift_a_car(const int stick_length, const int human_weight, const int car_weight) {
  // 转换分子为float
  return (float)(stick_length * human_weight) / (car_weight + human_weight);
}

如果担心整数乘法溢出(比如参数值较大时),可以提前转换单个参数:

float lift_a_car(const int stick_length, const int human_weight, const int car_weight) {
  return ((float)stick_length * human_weight) / (car_weight + human_weight);
}

方式二:使用浮点数常量触发自动类型提升

也可以将分母转换为float类型,同样能触发浮点数运算:

float lift_a_car(const int stick_length, const int human_weight, const int car_weight) {
  return (stick_length * human_weight) / (float)(car_weight + human_weight);
}

验证结果

修改后运行测试代码:

printf("%.4f\n", lift_a_car(2, 80, 1400));

会输出正确结果 0.1081。

内容的提问来源于stack exchange,提问作者Richard Gaál

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:25:45