我想了解为什么会发生某些事情。我需要在 Python 中实现整数平方根 (iqrt(64) = 8 = isqrt(80))。我确信天真的方法:
def isqrt(n):
return int(math.sqrt(n))
当传递的 n 是一个平方数时,必然会偶尔失败,假设 Python 转换为浮点数,然后对浮点数执行平方根计算。例如,调用 isqrt(13*13) 我希望在转换为浮点数并计算 sqrt 之后,你会得到类似 12.999999843 的东西,在转换为整数之后会给我们 12。
但是我执行了大循环测试值,无论大小,总是得到正确的结果。毕竟,似乎没有必要为整数实现一个特殊的平方根!
不理解让我感到困扰,就像本应有效的事情失败时一样。为什么会这样?
关于python中的整数平方根还有另一个问题:Python中的整数平方根
在那里定义的 isqrt() 中,将 +0.5 添加到 n 中,我想这正是为了解决我提到的我所期待的问题,但在特定情况下找不到。
编辑:忘记指定,我使用的是 Python 2.7