经过一段时间我的代码提出了一些原因,
OverflowError: cannot convert float infinity to integer
。
我无法看到它为什么会这样做的原因,很少使用花车而且没有使用inf,
def bugsInCode(begin):
bugs = begin
while bugs != 0:
print "%s bugs in the code, %s bugs\ntake one down patch it around, %s bugs in the code!" % (bugs, bugs, int(bugs * 1.5))
bugs = int(bugs * 1.5)
但是,使用1.5
或1
替换2
有效。为什么呢?
答案 0 :(得分:3)
bugs * 1.5
是一个浮点运算,因为浮点操作数(1.5
)可以转换回整数。注意bugs * 2
和bugs * 1
是整数运算,因为整数操作数。
它总是以指数速率(bugs = int(bugs * 1.5)
)增加。
最终bugs
将是一个足够大的整数,使得bugs * 1.5
将超过浮点数的最大允许值,因此将是“无穷大”。然后尝试将其转换回整数,因此错误消息是准确的。
bugs * 2
(如上所述的整数运算)有效,因为没有“无穷大”的概念或整数的溢出错误。 bugs * 1
,当然,只是永远运行。但是,bugs * 2.0
会失败。