Menggabungkan jawaban menjadi sekumpulan fungsi yang kelebihan beban (dan menggunakan "**" alih-alih "^^" seperti yang digunakan beberapa bahasa lain - lebih jelas bagi saya):
// 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)) }
Saat menggunakan Float, Anda mungkin kehilangan presisi. Jika menggunakan literal numerik dan campuran bilangan bulat dan non-bilangan bulat, Anda akan mendapatkan Double secara default. Saya pribadi menyukai kemampuan untuk menggunakan ekspresi matematika daripada fungsi seperti pow (a, b) karena alasan gaya / keterbacaan, tapi itu hanya saya.
Setiap operator yang akan menyebabkan pow () melakukan kesalahan juga akan menyebabkan fungsi-fungsi ini melakukan kesalahan, sehingga beban pemeriksaan kesalahan tetap terletak pada kode yang menggunakan fungsi daya. KISS, IMHO.
Menggunakan fungsi native pow () memungkinkan untuk misalnya mengambil akar kuadrat (2 ** 0,5) atau invers (2 ** -3 = 1/8). Karena kemungkinan untuk menggunakan eksponen invers atau pecahan, saya menulis semua kode saya untuk mengembalikan tipe ganda default fungsi pow (), yang akan mengembalikan presisi paling tinggi (jika saya mengingat dokumentasi dengan benar). Jika perlu, ini bisa diketikkan ke Int atau Float atau apa pun, mungkin dengan hilangnya presisi.
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8