我试图找到最大的立方根,它是一个整数,小于 12,000。
processing = True
n = 12000
while processing:
n -= 1
if n ** (1/3) == #checks to see if this has decimals or not
我不知道如何检查它是否是一个整数!我可以将其转换为字符串,然后使用索引来检查最终值并查看它们是否为零,但这似乎相当麻烦。有没有更简单的方法?
原文由 chopper draw lion4 发布,翻译遵循 CC BY-SA 4.0 许可协议
要检查浮点值是否为整数,请使用
float.is_integer()
方法:该方法已添加到 Python 2.6 中的
float
类型中。考虑到在 Python 2 中,
1/3
是0
(整数操作数的地板除法!),并且浮点运算可能不精确(afloat
是999127d0c使用二进制分数的近似值, 而不是 精确的实数)。但是稍微调整一下你的循环会给出:这意味着由于上述不精确性,任何超过 3 立方(包括 10648)的东西都被遗漏了:
您必须检查 接近 整数的数字,或者不使用
float()
来查找您的号码。就像向下取整12000
的立方根:如果您使用的是 Python 3.5 或更新版本,您可以使用
math.isclose()
函数 来查看浮点值是否在可配置的边距内:对于旧版本,如 PEP485 中所述,该功能的幼稚实现(跳过错误检查并忽略无穷大和 NaN):