我一直试图弄清楚如何以编程方式在Swift中找到数字的平方根。我正在寻找最简单的方法来完成所需的代码。我现在可能很容易实现,但无法找到一种方法。
非常感谢任何意见或建议。
提前致谢
答案 0 :(得分:35)
在Swift 3中,fun1()
协议似乎有FloatingPoint
方法。 squareRoot()
和Float
都符合Double
协议。所以:
FloatingPoint
就像它一样简单。
底层生成的代码应该是单个x86机器指令,不跳转到函数的地址然后返回,因为这转换为中间代码中内置的LLVM。因此,这应该比调用C库的let x = 4.0
let y = x.squareRoot()
函数更快,这实际上是一个函数,而不仅仅是汇编代码的宏。
在Swift 3中,不需要导入任何内容才能使其正常工作。
答案 1 :(得分:9)
请注意,sqrt()将要求导入至少以下之一:
答案 2 :(得分:4)
首先导入import UIKit
let result = sqrt(25) // equals to 5
那么你的结果应该是"结果"变量
答案 3 :(得分:2)
sqrt函数,例如sqrt(4.0)
答案 4 :(得分:0)
这应该适用于任何根源, 2- ∞ ,但您可能不在乎:
func root(input: Double, base: Int = 2) -> Double {
var output = 0.0
var add = 0.0
while add < 16.0 {
while pow(output, base) <= input {
output += pow(10.0, (-1.0 * add))
}
output -= pow(10.0, (-1.0 * add))
add += 1.0
}
return output + 0.0
}
答案 5 :(得分:0)
func sqrt(num:Int)-> Double {
var x1:Double = (Double(num) * 1.0) / 2;
var x2:Double = (x1 + (Double(num) / x1)) / 2;
while(abs(x1 - x2) >= 0.0000001){
x1 = x2;
x2 = (x1 + (Double(num) / x1)) / 2;
}
return Double(x2);
}
print(sqrt(num:2))
**output**
1.414
[1]: https://i.stack.imgur.com/SuLPj.png