You need to enable JavaScript to run this app. Java8使用Math.sqrt判断数值是否为完全平方数的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

Java8使用Math.sqrt判断数值是否为完全平方数的实现方法

Java8 判断完全平方数的实现方案

核心思路

完全平方数的平方根为整数,因此只需计算目标数的平方根后取整,再将取整结果平方,判断是否与原数相等即可。注意负数没有实数平方根,可直接判定为非完全平方数。

1. 整数输入的最简实现

针对int/long类型的整数输入,实现代码如下:

public static boolean isPerfectSquare(long num) {
    // 负数直接返回false
    if (num < 0) {
        return false;
    }
    long sqrt = (long) Math.sqrt(num);
    return sqrt * sqrt == num;
}

测试效果

  • 输入25:Math.sqrt(25)得到5.0,取整后5*5=25,返回true
  • 输入49:Math.sqrt(49)得到7.0,取整后7*7=49,返回true
  • 输入30:Math.sqrt(30)得到5.477225575051661,取整后5*5=25≠30,返回false

2. 浮点数输入的实现

如果需要支持double类型输入,需要增加极小的误差阈值规避浮点精度问题:

public static boolean isPerfectSquare(double num) {
    if (num < 0) {
        return false;
    }
    double sqrt = Math.sqrt(num);
    // 1e-9为误差容忍阈值,可根据实际需求调整
    return Math.abs(sqrt - Math.rint(sqrt)) < 1e-9;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 00:30:01