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

Python中math.sqrt返回浮点数,如何用其正确判断正整数是否为完全平方数

完全平方数判断问题修正方案

给定正整数num,编写一个函数,如果num是完全平方数则返回True,否则返回False。

你现有代码的错误点如下:

  • 硬编码了math.sqrt(16),没有使用入参num,逻辑永远固定判断16的平方根
  • math.sqrt返回值始终是float类型,即使结果是整数也会表示为x.0的形式,所以判断返回类型为int永远得到False

方案1:浮点数取余判断(无int强转)

直接对math.sqrt返回的浮点数做模1运算,如果结果为0说明该浮点数是整数,对应原数就是完全平方数,不会出现4.5这类值被误判的情况。
代码如下:

import math
class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        sqrt_val = math.sqrt(num)
        return sqrt_val % 1 == 0

方案2:精度增强版(避免超大数浮点精度丢失)

如果需要处理非常大的正整数,担心math.sqrt出现浮点精度丢失,可以补充取整后平方校验的逻辑,这里的int强转只是用于校验,不会出现你担心的误判问题:非整数的平方根强转后平方必然和原数不相等。
代码如下:

import math
class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        sqrt_val = math.sqrt(num)
        int_sqrt = int(sqrt_val)
        return int_sqrt * int_sqrt == num

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:39:03