确定浮点值的完整性
在此代码片段中,您正在寻找小于等于整数的最大立方根12,000:
processing = True n = 12000 while processing: n -= 1 if n ** (1/3) == #checks to see if this has decimals or not
验证浮点值是否为整数,您可以使用 float.is_integer() 方法:
>>> (1.0).is_integer() True >>> (1.555).is_integer() False
请注意,在 Python 2 中,由于整数操作数的底除法,1/3 结果为 0,并且浮点运算可能不精确。考虑到这一点调整循环:
for n in range(12000, -1, -1): if (n ** (1.0/3)).is_integer(): print n
我们得到了预期的结果:
27 8 1 0
但是,由于浮点运算的不精确性,高于 3 立方的数字(包括10648)被省略。为了解决这个问题,您可以检查接近整数的数字:
import math for n in range(12000, -1, -1): if math.isclose((n ** (1.0/3)), round(n ** (1.0/3))): print n
此变体输出:
10648 27 8 1 0
对于 Python 3.5 及更高版本,您可以使用 math. isclose() 函数检查浮点值是否在可自定义的边距内。
以上是如何在 Python 中检查浮点型是否代表整数?的详细内容。更多信息请关注PHP中文网其他相关文章!