在Swift中找到Square Root的最简单方法?

时间:2015-06-30 19:09:39

标签: swift math square-root

我一直试图弄清楚如何以编程方式在Swift中找到数字的平方根。我正在寻找最简单的方法来完成所需的代码。我现在可能很容易实现,但无法找到一种方法。

非常感谢任何意见或建议。

提前致谢

6 个答案:

答案 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()将要求导入至少以下之一:

  • 的UIKit
  • 可可
    • 您只需导入Darwin而不是完整的Cocoa
  • 粉底

答案 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