You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Swift数组中筛选并仅输出平方根为整数的数值?

实现筛选平方根为整数的数值

直接用sqrt()结果判断是否为整数容易踩浮点数精度的坑——比如部分大数的平方根计算会因浮点精度丢失导致判断错误。正确的思路是:计算平方根后取整,再将该整数平方,对比是否等于原数。

数组筛选示例代码

let numbers = [1, 2, 3, 4, 5, 16, 20, 25, 30]
// 过滤出平方根为整数的元素
let perfectSquares = numbers.filter { number in
    guard number >= 0 else { return false } // 负数无实数平方根,直接排除
    let sqrtValue = sqrt(Double(number))
    let roundedSqrt = Int(sqrtValue)
    return roundedSqrt * roundedSqrt == number
}

print(perfectSquares) // 输出: [1, 4, 16, 25]

单个数值判断的封装函数

如果需要单独判断某个数是否符合要求,可以封装成工具函数:

func isPerfectSquare(_ number: Int) -> Bool {
    guard number >= 0 else { return false }
    let sqrtValue = sqrt(Double(number))
    let rounded = Int(sqrtValue)
    return rounded * rounded == number
}

// 调用示例
print(isPerfectSquare(25)) // true
print(isPerfectSquare(20)) // false

内容的提问来源于stack exchange,提问作者Yellow_Hornet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:52:00