关于python:检查一个数字是否是一个整个多维数据集

Checking if the a number is a whole cube

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
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))

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


您正在检查错误的条件,比较浮点值是否相等很容易让您陷入噩梦。检查python文档在这方面的内容。

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

1
2
3
4
5
6
7
8
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中,由于round返回intx = int(round(x))可以写为round(x)