我试图做这样的事情

var myCGFloat: CGFloat = 3.001
ceilf(myCGFloat)

ceilf 只接受 Float 值。在四处搜索时,有很多关于进行这种转换的不同答案,或者取决于它是 32 位还是 64 位架构。

事实证明,解决方案相当简单,但我花了很长时间才找到它。所以我写这个问答对作为其他人的捷径。

最佳答案

现在,执行此操作的Swift方法是使用rounded(.up)(如果要在适当位置更改变量,则使用round(.up))。 Behind the scenes it is using ceil ,可以将CGFloat作为参数,并且是architecture independent

let myCGFloat: CGFloat = 3.001
let y = myCGFloat.rounded(.up) // 4.0

这相当于
var myCGFloat: CGFloat = 3.001
let y = ceil(myCGFloat) // 4.0

不再需要使用ceilf

另请参见my fuller关于CGFloat的答案以及各种取整规则。

关于CGFloat 相当于 ceilf 的 Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34286184/

10-13 05:42