【问题标题】:Swift 3 - Find if the Number is a perfect Square [closed]Swift 3 - 查找数字是否是完美的正方形 [关闭]
【发布时间】:2017-09-04 05:51:06
【问题描述】:

我想知道是否有一种方法可以在 Swift 中找出一个数字是否是一个完美的正方形。我让用户输入一个数字来检查它是否是一个完美的正方形。有没有语句或函数?提前谢谢!

【问题讨论】:

    标签: swift perfect-square


    【解决方案1】:

    试试这样的:

    var number = 9.0
    
    let root = sqrt(number)
    let isInteger = floor(root) == root
    print("\(root) is \(isInteger ? "perfect" : "not perfect")")
    

    我找到了in this related question 的那个“isInteger”位。

    【讨论】:

      【解决方案2】:

      编辑/更新:Swift 5.2

      extension BinaryInteger {
          var isPerfectSquare: Bool {
              guard self >= .zero else { return false }
              var sum: Self = .zero
              var count: Self = .zero
              var squareRoot: Self = .zero
              while sum < self {
                  count += 2
                  sum += count
                  squareRoot += 1
              }
              return squareRoot * squareRoot == self
          }
      }
      

      游乐场

      4.isPerfectSquare     // true
      7.isPerfectSquare     // false
      9.isPerfectSquare     // true
      (-9).isPerfectSquare  // false
      

      【讨论】:

      • 出于任何考虑,您是否认为它应该抛出错误-nan 例如-?还是返回 false 就足够了?
      • 它是一个布尔值 true 或 false 你可以添加一个前置条件但是返回 false 我认为这就足够了
      猜你喜欢
      • 2015-11-06
      • 2016-06-15
      • 2022-08-23
      • 2016-03-07
      • 2016-07-03
      • 2016-08-26
      • 1970-01-01
      相关资源
      最近更新 更多