为什么is_integer()方法不起作用?

时间:2014-10-05 10:40:27

标签: python python-2.7 floating-point

我用Python编写了这段代码:

x=345**3
z=float(x)**(1.0/3.0)
print z
print z.is_integer()

输出结果为:

345.0
False

为什么?我希望输出为True

2 个答案:

答案 0 :(得分:6)

因为z并非完全345.0

>>> x = 345 ** 3
>>> z = float(x) ** (1.0 / 3.0)
>>> print z
345.0
>>> (345.0).is_integer()
True

到目前为止一切都很好,但是:

>>> z.is_integer()
False
>>> z == 345.0
False
>>> z
344.9999999999999

这只是一个显示问题,因为str的{​​{1}}和repr形式存在差异:

float

答案 1 :(得分:0)

您将非整数提升为非整数的幂,因此结果为非整数