Swift中的指数运算符
在Swift语言参考中,我没有看到在基本算术运算符中定义的指数运算符。
语言中是否真的没有预定义的整数或浮点乘幂运算符?
没有一个操作符,但你可以像这样使用pow函数:
return pow(num, power)
如果你愿意,你也可以让操作员调用这个pow函数:
infix operator ** { associativity left precedence 170 } func ** (num: Double, power: Double) -> Double{ return pow(num, power) } 2.0**2.0 //4.0
如果你碰巧正在提高2的权力,你可以使用按位左移运算符:
let x = 2 << 0 // 2 let y = 2 << 1 // 4 let z = 2 << 7 // 256
请注意,“功率”值比您想象的要小1。
请注意,这比pow(2.0, 8.0)
更快pow(2.0, 8.0)
并且可以避免使用双打。
对于任何寻找**
缀运算符的Swift 3版本的人:
precedencegroup ExponentiationPrecedence { associativity: right higherThan: MultiplicationPrecedence } infix operator ** : ExponentiationPrecedence func ** (_ base: Double, _ exp: Double) -> Double { return pow(base, exp) } func ** (_ base: Float, _ exp: Float) -> Float { return pow(base, exp) } 2.0 ** 3.0 ** 2.0 // 512 (2.0 ** 3.0) ** 2.0 // 64
我这样做了:
operator infix ** { associativity left precedence 200 } func ** (base: Double, power: Double) -> Double { return exp(log(base) * power) }
没有一个,但你有pow
function。
像大多数的C语言家族一样,没有一个。