以0.1递增0.10000000001(Python)

时间:2019-10-08 16:28:44

标签: python function while-loop floating-point increment

我正在制作一个简单的程序,该程序调用一个函数来查找数字的平方根或具有给定公差的近似平方根。 我正在使用while循环来遍历所有可能性,并在每个循环中使用一个“潜在”变量递增0.1,直到找到平方根为止。由于某些原因,在第一个和第二个循环中,该变量可以精细地递增,但是在第三个循环中,它可以递增0.100000000001。 如果我增加0.2,则根本不会发生,但是很明显,“势能”变量将跳过某些平方根。

希望有人可以告诉我这里出了什么问题。谢谢


def squareroot(x, y):
    potential = 1.5
    limit = 1
    while limit <= 1000:
        if potential * potential == x:
            print(potential, "is the square root of", x)
            return
        elif potential * potential >= (x-y) and potential * potential <= (x+y):
            print(potential, "is the approximate square root of", x, "with a tolerance of", y)
            return
        elif potential * potential > (x+y):
            print("Cannot find square root of", x)
            print(potential) #So I can see how far x goes past 2
            return
        else:
            print(potential) # so I can see what values are produced on each loop
            potential = potential + 0.1
        limit += 1


squareroot(4,0)

0 个答案:

没有答案