【发布时间】:2014-05-13 02:17:55
【问题描述】:
这似乎很简单,但我找不到方法。我需要显示整数的立方根是否为整数。我在 Python 3.4 中使用了 is_integer() float 方法,但这并不成功。作为
x = (3**3)**(1/3.0)
is_integer(x)
True
但是
x = (4**3)**(1/3.0)
is_integer(x)
False
我尝试了x%1 == 0、x == int(x) 和isinstance(x,int),但没有成功。
如有任何意见,我将不胜感激。
【问题讨论】:
-
不幸的是,这不是一种明智的做法。
-
@IgnacioVazquez-Abrams 好的!那么有什么理智的方法吗?
-
并非特别如此。我会设置/找到一个上限并保留一个列表。
-
@IgnacioVazquez-Abrams 但在某种程度上它并不准确。
-
我怀疑您的立方根遇到浮点舍入问题。如果您的值与整数相差一小部分,您会将其视为非整数。尝试使用更适合浮点数的测试:
abs((x-round(x))/x) < epsilon(对于一些小的 epsilon)。
标签: python python-3.x