Combinando le risposte in un insieme sovraccarico di funzioni (e usando "**" invece di "^^" come usano altri linguaggi - più chiaro per me):
// http://stackoverflow.com/questions/24196689/how-to-get-the-power-of-some-integer-in-swift-language
// Put this at file level anywhere in your project
infix operator ** { associativity left precedence 160 }
func ** (radix: Double, power: Double) -> Double { return pow(radix, power) }
func ** (radix: Int, power: Int ) -> Double { return pow(Double(radix), Double(power)) }
func ** (radix: Float, power: Float ) -> Double { return pow(Double(radix), Double(power)) }
Quando usi Float, potresti perdere la precisione. Se utilizzi valori letterali numerici e una combinazione di numeri interi e non interi, ti ritroverai con Double per impostazione predefinita. Personalmente mi piace la possibilità di usare un'espressione matematica invece di una funzione come pow (a, b) per ragioni stilistiche / di leggibilità, ma sono solo io.
Qualsiasi operatore che potrebbe causare la generazione di un errore da parte di pow () causerà anche la generazione di un errore da parte di queste funzioni, quindi l'onere del controllo degli errori ricade comunque sul codice che utilizza la funzione di alimentazione. BACIO, IMHO.
L'uso della funzione nativa pow () consente ad esempio di prendere radici quadrate (2 ** 0,5) o inverse (2 ** -3 = 1/8). A causa della possibilità di utilizzare esponenti inversi o frazionari, ho scritto tutto il mio codice per restituire il tipo Double predefinito della funzione pow (), che dovrebbe restituire la massima precisione (se ricordo correttamente la documentazione). Se necessario, questo può essere convertito in tipo Int o Float o qualsiasi altra cosa, possibilmente con la perdita di precisione.
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8