【发布时间】:2015-09-07 16:04:44
【问题描述】:
我需要编写一个生成器来获取一个范围,并且每次调用都会产生下一个浮点步骤。
Python 代码:
def float_range(x, y, step):
while x <= y:
x = float(x)
if x % 1 == 0: # Here is the problem
yield int(x)
else:
yield x
x += step
当一个数字可以除以一时,我应该把这个数字作为一个整数,但if 语句永远不会是真的。
我已经尝试过float.is_integer()。
【问题讨论】:
-
“我已经尝试过 float.is_integer()” - 怎么样,结果如何?
-
不,它没有。我想知道为什么 x % 1 == 0 没有得到 True。
-
jonrsharpe - 相同 - 表达式不正确
-
@Etgar:
float.is_integer()和x % 1 == 0都将是错误的,原因完全相同:您实际上没有整数。你有一个整数加或减一小部分。 -
@vaultah:呃,那你不妨选择任何浮动不精确的帖子,至少给这个 OP 一个更有帮助的答案。