將答案組合成一組超載的函數nctions(以及使用「**」而不是「^^」一些其他的語言使用 - 更清晰的給我):
// 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)) }
當使用浮動,你可能會失去精度。如果使用數字文字以及整數和非整數的組合,默認情況下最終會使用Double。我個人喜歡使用數學表達式而不是像pow(a,b)這樣的功能來實現文體/可讀性的功能,但這只是我自己。
任何會導致pow()拋出錯誤的操作符也會導致這些函數拋出一個錯誤,所以錯誤檢查的負擔仍然在於使用power函數的代碼。 KISS,恕我直言。使用本地pow()函數允許例如取平方根(2 ** 0.5)或反(2 ** -3 = 1/8)。由於可能使用反向或小數指數,我寫了所有的代碼來返回pow()函數的默認Double類型,它應該返回最高精度(如果我正確記住文檔)。如果需要的話,可以將其輸入到Int或Float或其他類型,可能會導致精度下降。
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8
這些類型的聲明是錯誤的 –
TYOR的SORRY,我修正了它 –
由於[這個原因]大多數語言沒有整數冪函數(https://stackoverflow.com/q/2398442/995714) –