python运算过程中出错

在练习的时候发现的问题,运算出来的数据是错误的,可是逻辑没问题啊
请问谁能解释一下

'''求在(min, max)数字范围内,符合*等于自然数的n次方*的数的数量'''
def solution(n, min, max):
    return sum(i**(1/n)%1==0 for i in range(min, max + 1))

print(solution(3, 1, 300))
'''验证'''
for i in range(1, 7):
    print(i**3)

求出的数应该是6,可运算出来只有3

3
1
8
27
64
125
216
343

i**(1/n)%1 结果是浮点数.浮点数计算是有误差的.,结果可能近似0,不是等于0
比如print(216**(1/3))等于5.999999999999999 而不是6

判断近似0是这样:

'''求在(min, max)数字范围内,符合*等于自然数的n次方*的数的数量'''
def solution(n, min, max):
    return sum((i**(1/n)+0.0000000001)%1 < 0.000000001 for i in range(min, max + 1))

print(solution(3, 1, 300))
'''验证'''
for i in range(1, 7):
    print(i**3)

可以看下python参考手册中的 python-比较运算