Python-整数值的通配符?

Python-整数值的通配符?,python,python-3.x,rounding,wildcard,Python,Python 3.x,Rounding,Wildcard,如何使代码对小数点为x.99999999的任何值进行四舍五入 到目前为止,我掌握的代码是: y = int(input("Enter a cube number ")) cuberoot = y**(1/3) if cuberoot.is_integer(): print("integer") else: if cuberoot == HERE.9999999: print("Integer") else: print("not integ

如何使代码对小数点为x.99999999的任何值进行四舍五入

到目前为止,我掌握的代码是:

y = int(input("Enter a cube number "))
cuberoot = y**(1/3)
if cuberoot.is_integer():
    print("integer")
else:
    if cuberoot == HERE.9999999:
        print("Integer")
    else:
        print("not integer")
帮助 (上面写着“这里”的是我应该放在那里的东西)

使用模运算符

y = int(input("Enter a cube number "))
cuberoot = y ** (1/3)
fraction = cuberoot % 1
if fraction == 0 or fraction > 0.999999:
    print("integer")
else:
    print("not integer")

对于大数字,使用错误容差将导致错误结果。例如,1012-1不是立方体,但
(10**12-1)**(1/3)
9999.9999996662
,它将通过您的测试

更安全的方法是将其四舍五入为整数,然后检查其是否具有正确的多维数据集:

def是_立方体(x):
y=x**(1/3)
y=int(圆形(y))
如果y**3==x:
打印('整数')
其他:
打印('非整数')
示例:

>>是多维数据集(27)
整数
>>>is_立方体(28)
非整数
>>>is_立方体(10**12)
整数
>>>is_立方体(10**12-1)
非整数

但是,请注意,这不适用于非常大的数字,因为
x**(1/3)
是使用浮点数完成的,因此误差可能大于0.5,在这种情况下,舍入将给出错误的结果。例如,上面的代码输入失败
10**45

这很好,现在我如何设置一个问题作为答案以供参考,失败的最小数字是193100551,它不是一个立方体(它是578^3-1)。