取整** 0.5和math.sqrt

Syl*_*ell 2 python math square-root

在Python中,

n**0.5  # or
math.sqrt(n) 
Run Code Online (Sandbox Code Playgroud)

认识到一个数字是一个完美的平方?具体来说,我应该担心使用时

int(n**0.5)  # instead of
int(n**0.5 + 0.000000001)
Run Code Online (Sandbox Code Playgroud)

由于精度误差,我可能会不小心以小于实际平方根的数字结束运算?

cas*_*evh 5

由于有几个答案都建议使用整数算术,因此我将推荐gmpy2库。它提供了一些功能,用于检查数字是否为理想幂,计算整数平方根和带余数的整数平方根。

>>> import gmpy2
>>> gmpy2.is_power(9)
True
>>> gmpy2.is_power(10)
False
>>> gmpy2.isqrt(10)
mpz(3)
>>> gmpy2.isqrt_rem(10)
(mpz(3), mpz(1))
Run Code Online (Sandbox Code Playgroud)

免责声明:我维护gmpy2。