在Swift中,找到值的第n个根的最简单方法是什么?
答案 0 :(得分:16)
我们知道数字的第N个根x等于将x提升为N的倒数的幂。知道这一点,我们可以使用pow
函数来找到第N个根:< / p>
let nthRoot = pow(base, (1/n))
其中base
和n
是浮点变量。
答案 1 :(得分:3)
let nthRoot = pow(base, (1/n)) // will return nan for negative base
此表达式是部分解决方案,因为它不适用于负base
个数字。
实施例。所有数学定律都明确定义了-27
的立方根(-3
)。
这是一个为负值正确计算第n个根的函数,其中value
是将由n
生根的数字:
func nthroot(value: Double, _ n: Double) -> Double {
var res: Double
if (value < 0 && abs(n % 2) == 1) {
res = -pow(-value, 1/n)
} else {
res = pow(value, 1/n)
}
return res
}
nthroot(-27, 3) // returns -3
使用三元运算符的相同函数:
func nthroot(value: Double, _ n: Double) -> Double {
return value < 0 && abs(n % 2) == 1 ? -pow(-value, 1/n) : pow(value, 1/n)
}
nthroot(-27, 3) // also returns -3
答案 2 :(得分:0)
注意:pow(base,(1 / n))得出的NaN为负数实际上是正确的。
-1的平方根定义为复数“ i”,表示所有负数的平方根均为复数值,因此不是可以表示为Double的数字。