检查一个数字是否是整个立方体

时间:2015-05-05 18:19:14

标签: python math

我是python中的初学者,并编写了一个代码来检查数字是否是整数的立方体。代码似乎对某些值工作正常,但是对于某些(甚至是整个多维数据集),它将多维数据集根打印为(x-0.000000004x为多维数据集根。例如,它将3.9999999996作为64的立方根,但将为8,125打印2,5。有什么想法吗?

n=int(input("Please enter the number: "))
print (n)
x=n**(1/3)
print (x)
if x==int(x):
    print ('%s is a whole cube'%(n))
else:
    print ('%s is not a whole cube'%(n))

忽略中间打印语句,它们仅用于逐行调试。

1 个答案:

答案 0 :(得分:5)

你正在检查错误的条件,比较浮点值的平等可以很容易让你做恶梦。检查python docs have to say on this

的内容

相反,绕过根,将其转换为int,然后将此整数的多维数据集与原始数字进行比较:

n = int(input("Please enter the number: "))
print (n)
x = n**(1/3)
x = int(round(x))
if x**3 == n:
    print ('%s is a whole cube'%(n))
else:
    print ('%s is not a whole cube'%(n))

正如@StevenRumbalski在评论中指出的那样,在Python3中,x = int(round(x))可以写成round(x),因为round会返回int