【问题标题】:How to return exact value of square root in python?如何在 python 中返回平方根的精确值?
【发布时间】:2023-02-02 22:10:28
【问题描述】:

如果我输入 25,答案应该是整数 5。如果我输入 24 答案应该是 4.898989486 float。这可能在 python 中做吗?

上下文-:我需要编写代码来找到下一个完美的正方形。

import math

def find_next_square(sq):
    # Return the next square if sq is a square, -1 otherwise
    sq2=math.sqrt(sq)
    xyz=isinstance(sq2, int)
    if (xyz==True):
        print("Is perfect square")
        nextsq=sq+1
        print("Next perfect square=",nextsq**2)
    else:
        print("Not perfect square")
        return -1

n=int(input("Enter an integer"))
find_next_square(n)

这是代码。 对于 25,这将返回 sq2=5.0,因此它返回 Not perfect square。我需要一种方法来使这个返回完美的正方形。

期望的行为-:

如果我把 25 作为 n。它应该将其作为完美正方形返回并返回 36。

具体问题-:

这里的问题是

import math

sq=25
sq2=math.sqrt(sq)
print(sq2)
xyz=isinstance(sq2, int)
print(xyz)

即使对于 sq=25,它也会将其作为浮点数返回。那个 math.sqrt() 函数。它改变了我的整个游戏。

重现问题所需的最短代码-:

import math

sq=24
sq2=math.sqrt(sq)
print(sq2)
xyz=isinstance(sq2, int)
print(xyz)

【问题讨论】:

  • 你试过什么了?结果如何?
  • 为什么5.0是个问题?您可以编写一个检查result % 1 == 0 的函数,然后将其转换为 int(如果为真)。
  • 或者 if result.is_integer(): - 浮动 have that method
  • import math然后math.sqrt(24)呢?我得到 4.898979485566356,再次平方得到 23.999999999999996,这对于浮点数来说非常好

标签: python


【解决方案1】:
import math

ans = math.sqrt(int(input()))  # calculate an answer
print(int(ans) if ans.is_integer() else ans)  # convert answer to int if we can do it

【讨论】:

  • 那么,你能接受我的回答吗? (如果有帮助)
【解决方案2】:

当答案是无理数时,sqrt() 将返回 sqrt(number)。它甚至会减少答案。 print(sqrt(90)) 将返回 3*sqrt(10) 因为 9 的平方根是有理数。

就像其他人提到的那样,导入 math 并使用 math.sqrt() 将返回一个近似的浮点数。

【讨论】:

    猜你喜欢
    • 2016-04-27
    • 2020-09-26
    • 2023-01-26
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多