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

整数运算表达式赋值给float类型变量结果恒为0问题

异常原因

这是静态类型语言中整数运算的自动类型截断规则导致的:

  • 代码中houseWithHospitalCount和houseCount都是int整数类型,二者做除法时,运算结果默认也是int类型,不会自动保留小数位,计算时会直接丢弃小数部分、只保留整数位结果。
  • 当houseWithHospitalCount < houseCount时,二者相除的结果小于1,整数截断后结果固定为0,再和后续的houseCount做乘法,0乘任何整数结果都是0,最后赋值给float类型的score时,才会把整数0转为浮点型0.0,因此最终返回值始终为0。
  • 当两个参数值相等时,除法结果为整数1,后续乘法计算结果正确,因此不会暴露这个类型转换问题。
修复方法

在执行除法运算前,先将其中一个运算数强制转换为float浮点类型,让整个除法运算自动提升为浮点计算,避免整数截断:

score = (float) houseWithHospitalCount / houseCount * houseCount;

注意:强转操作不能包裹整个除法表达式,比如写成(float)(houseWithHospitalCount/houseCount)是无效的——这种写法会先执行括号内的整数除法得到0,再转浮点也还是0,必须保证除法运算的两个操作数里至少有一个是浮点类型,才会触发浮点运算逻辑。

内容的提问来源于stack exchange,提问作者Hogu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:15:35