Combiner les réponses dans un ensemble surchargé de fonctions (et utiliser "**" au lieu de "^^" comme certains autres langages l'utilisent - plus clair pour moi):
// 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)) }
Lorsque vous utilisez Float, vous risquez de perdre en précision. Si vous utilisez des littéraux numériques et un mélange d'entiers et de non-entiers, vous vous retrouverez avec Double par défaut. Personnellement, j'aime la possibilité d'utiliser une expression mathématique au lieu d'une fonction comme pow (a, b) pour des raisons stylistiques / lisibles, mais ce n'est que moi.
Tous les opérateurs qui provoqueraient le déclenchement d'une erreur par pow () entraîneront également l'émission d'une erreur par ces fonctions, de sorte que le fardeau de la vérification des erreurs incombe toujours au code utilisant la fonction d'alimentation de toute façon. KISS, à mon humble avis.
L'utilisation de la fonction native pow () permet par exemple de prendre des racines carrées (2 ** 0,5) ou inverses (2 ** -3 = 1/8). En raison de la possibilité d'utiliser des exposants inverses ou fractionnaires, j'ai écrit tout mon code pour renvoyer le type Double par défaut de la fonction pow (), qui devrait renvoyer le plus de précision (si je me souviens bien de la documentation). Si nécessaire, cela peut être transtypé en Int ou Float ou autre, éventuellement avec une perte de précision.
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8