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

Swift中10*75%计算结果为0的解决及转Int取整至8的方法

问题解答

嘿,我来帮你拆解这两个问题:

1. 不改变变量类型和值,得到正确结果7.5

你碰到的问题本质是整数除法的截断特性——如果a和b都是Int类型(比如let a = 10,let b = 75),直接执行a * b / 100时,所有运算都会以整数规则进行:10*75=750,750/100在整数除法里会直接截断小数部分,得到0。

要在完全保留a、b的类型和值的前提下得到7.5,只需要在计算时把其中一个(或两个)临时转换为浮点数,让运算切换到浮点语境:

let a = 10 // 保持Int类型,值10不变
let b = 75 // 保持Int类型,值75不变

// 方案1:把两个Int都转成Double计算
let correctResult = Double(a) * Double(b) / 100.0

// 方案2:只转其中一个,Swift会自动提升另一个的类型
// let correctResult = Double(a) * b / 100.0

两种方案都能得到精确的7.5,同时a和b还是原来的Int类型和值。

2. 将7.5取整为Int类型的8

如果已经拿到了7.5这个浮点结果,要向上取整到8(注意:默认四舍五入7.5会得到7,而你需要的是向上取整),可以用Swift标准库的ceil()函数,之后再转成Int:

let floatResult = 7.5 // 你的正确计算结果
let roundedInt = Int(ceil(floatResult)) // 最终得到Int类型的8

ceil()的作用是返回大于等于输入值的最小整数,完美匹配你把7.5取整为8的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:11:14