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

Swift中x不等于0时x / 100结果为0的原因是什么?

问题成因

  • Swift中默认对两个Int类型的操作数执行整数截断除法:运算结果会直接舍弃小数部分,仅保留整数位。
    你的代码中i是Int类型,字面量100默认也是Int类型,二者做除法得到的结果本身就是Int类型:当i取值1~99时,除法结果的小数部分全部被截断,最终结果为0;仅当i=100时结果为1,符合你观察到的输出表现。
  • 你尝试的类型转换写法执行顺序有误:代码Float(i/100)会先完成两个Int的除法运算得到Int类型的0,再将0转换为Float类型的0.0,因此无法解决问题。

修复方案

仅需要保证除法运算的其中一个操作数为浮点类型,触发Swift的浮点除法规则即可,正确写法参考:

// 写法1:先将i转为Float再做除法
let xValue = Float(i) / 100

// 写法2:将除数写为浮点字面量,触发隐式类型提升
let xValue = i / 100.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:24:03