Easiest way to find Square Root in Swift?

前端 未结 6 1880
小鲜肉
小鲜肉 2021-02-18 22:00

I have been trying to figure out how to programmatically find a square root of a number in Swift. I am looking for the simplest possible way to accomplish with as little code ne

相关标签:
6条回答
  • 2021-02-18 22:12

    Note that sqrt() will require the import of at least one of:

    • UIKit
    • Cocoa
      • You can just import Darwin instead of the full Cocoa
    • Foundation
    0 讨论(0)
  • 2021-02-18 22:22

    this should work for any root, 2 - , but you probably don't care:

    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
    }
    
    0 讨论(0)
  • 2021-02-18 22:28

    First import import UIKit

    let result = sqrt(25) // equals to 5
    

    Then your result should be on the "result" variable

    0 讨论(0)
  • 2021-02-18 22:30
    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
    
    0 讨论(0)
  • 2021-02-18 22:31

    In Swift 3, the FloatingPoint protocol appears to have a squareRoot() method. Both Float and Double conform to the FloatingPoint protocol. So:

    let x = 4.0
    let y = x.squareRoot()
    

    is about as simple as it gets.

    The underlying generated code should be a single x86 machine instruction, no jumping to the address of a function and then returning because this translates to an LLVM built-in in the intermediate code. So, this should be faster than invoking the C library's sqrt function, which really is a function and not just a macro for assembly code.

    In Swift 3, you do not need to import anything to make this work.

    0 讨论(0)
  • 2021-02-18 22:31

    sqrt function for example sqrt(4.0)

    0 讨论(0)
提交回复
热议问题