mcg*_*086 71 exponentiation swift
我没有看到Swift语言参考中的基本算术运算符中定义了一个取幂运算符.
语言中是否真的没有预定义的整数或浮点运算运算符?
Con*_*nor 86
没有操作员,但您可以使用这样的pow功能:
return pow(num, power)
Run Code Online (Sandbox Code Playgroud)
如果你愿意,你也可以让操作员调用pow函数,如下所示:
infix operator ** { associativity left precedence 170 }
func ** (num: Double, power: Double) -> Double{
return pow(num, power)
}
2.0**2.0 //4.0
Run Code Online (Sandbox Code Playgroud)
小智 23
如果您恰好将2提升到某个功率,则可以使用按位左移运算符:
let x = 2 << 0 // 2
let y = 2 << 1 // 4
let z = 2 << 7 // 256
Run Code Online (Sandbox Code Playgroud)
请注意,"功率"值比您想象的要小1.
请注意,这比pow(2.0, 8.0)使用速度更快,并且可以避免使用双打.
rei*_*kus 12
对于任何寻找Swix 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
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
operator infix ** { associativity left precedence 200 }
func ** (base: Double, power: Double) -> Double {
return exp(log(base) * power)
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特 4.2
import Foundation
var n = 2.0 // decimal
var result = 5 * pow(n, 2)
print(result)
// 20.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48905 次 |
| 最近记录: |