将答案合并到一组重载的函数中(并使用“ **”代替某些其他语言使用的“ ^^”-对我来说更清楚):
// 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)) }
使用Float时,您可能会失去精度。如果使用数字文字以及整数和非整数的混合形式,则默认情况下将以Double结尾。我个人喜欢出于数学/可读性原因而使用数学表达式而不是像pow(a,b)这样的函数的能力,但这就是我自己。
任何会导致pow()引发错误的运算符也会导致这些函数引发错误,因此,无论如何,使用power函数进行代码检查仍然是错误检查的重担。吻,恕我直言。
使用本机的pow()函数可以例如求平方根(2 ** 0.5)或取平方根(2 ** -3 = 1/8)。由于可以使用反指数或分数指数,因此我编写了所有代码以返回pow()函数的默认Double类型,该类型应返回最精确的值(如果我正确地记得文档)。如果需要,可以将其类型转换为Int或Float或其他类型,可能会损失精度。
2 ** -3 = 0.125
2 ** 0.5 = 1.4142135623731
2 ** 3 = 8