这在iPhone 5上可以正常使用,但在iPhone 5S或iPad Air上则不能。

无法找到接受提供的参数的'+'重载

为什么?

func randomFloat(from:Float, to:Float) -> Float {
    let rand:CGFloat = CGFloat(arc4random() % 1000) / 1000
    return (rand) * (to - from) + from
}

最佳答案

诀窍是使用CGFloat而不是Float

func randomFloat(from:CGFloat, to:CGFloat) -> CGFloat {
    let rand:CGFloat = CGFloat(arc4random() % 1000) / 1000
    return (rand) * (to - from) + from
}

您看到的问题是CGFloat的别名取决于架构。对于32位ARM(iPhone 4S和5),内部是Float,而对于arm64,实际上是Double。如果您只使用CGFloat而不是Float进行类型转换,则可以正常工作

关于ios - 在iPhone 5S的两个 float 之间生成随机 float ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24562516/

10-12 13:02