Kombinieren Sie die Antworten zu einem überladenen Satz von Funktionen (und verwenden Sie "**" anstelle von "^^", wie es einige andere Sprachen verwenden - für mich klarer):
// 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)) }
Bei Verwendung von Float können Sie an Präzision verlieren. Wenn Sie numerische Literale und eine Mischung aus Ganzzahlen und Nicht-Ganzzahlen verwenden, erhalten Sie standardmäßig Double. Ich persönlich mag die Möglichkeit, aus stilistischen / lesbaren Gründen einen mathematischen Ausdruck anstelle einer Funktion wie pow (a, b) zu verwenden, aber das bin nur ich.
Alle Operatoren, die bewirken würden, dass pow () einen Fehler auslöst, führen auch dazu, dass diese Funktionen einen Fehler auslösen. Die Last der Fehlerprüfung liegt also weiterhin beim Code, der die Power-Funktion verwendet. KUSS, IMHO.
Die Verwendung der nativen pow () -Funktion ermöglicht es beispielsweise, Quadratwurzeln (2 ** 0,5) oder inverse (2 ** -3 = 1/8) zu ziehen. Aufgrund der Möglichkeit, inverse oder gebrochene Exponenten zu verwenden, habe ich meinen gesamten Code geschrieben, um den Standard-Double-Typ der pow () -Funktion zurückzugeben, der die höchste Genauigkeit zurückgeben sollte (wenn ich mich richtig an die Dokumentation erinnere). Bei Bedarf kann dies auf Int oder Float oder was auch immer typisiert werden, möglicherweise mit Genauigkeitsverlust.
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8