【发布时间】:2017-09-04 05:51:06
【问题描述】:
我想知道是否有一种方法可以在 Swift 中找出一个数字是否是一个完美的正方形。我让用户输入一个数字来检查它是否是一个完美的正方形。有没有语句或函数?提前谢谢!
【问题讨论】:
标签: swift perfect-square
我想知道是否有一种方法可以在 Swift 中找出一个数字是否是一个完美的正方形。我让用户输入一个数字来检查它是否是一个完美的正方形。有没有语句或函数?提前谢谢!
【问题讨论】:
标签: swift perfect-square
试试这样的:
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”位。
【讨论】:
编辑/更新: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
【讨论】:
false 就足够了?