python关于浮点数的问题

下面代码是求10000以内的完全平方数,为什么要将math.sqrt(i + 100) 转化为int类型,不能用float类型 x 相乘?我测试如果不用int转化,结果是错的。

import math

num = []
for i in range(1, 10001):
    x = int(math.sqrt(i + 100))
    y = int(math.sqrt(i + 268))
    if (x ** 2 == i + 100) and (y ** 2 == i + 268):
        num.append(i)
print("这些数是" + str(num))

float和int表示数的范围和精度不同,float判断相等的时候也带有误差,整数的问题最好就用 int