Я не вижу оператора экспоненциальности, определенного в базовых арифметических операциях в справочной системе Swift.
На самом деле не существует предопределенного целочисленного или float-оператора экспоненциального выражения на языке?
Я не вижу оператора экспоненциальности, определенного в базовых арифметических операциях в справочной системе Swift.
На самом деле не существует предопределенного целочисленного или float-оператора экспоненциального выражения на языке?
Нет оператора, но вы можете использовать функцию 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
Обратите внимание, что значение "power" на 1 меньше, чем вы думаете.
Обратите внимание, что это быстрее, чем 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
.
Как и большинство языков C-семейства, их нет.