3

我的 Python 代码对我(或者我的数字)做了一些奇怪的事情:

一种)

float(poverb.tangibles[1])*1000
1038277000.0

b)

float(poverb.tangibles[1]*1000)
inf

这导致发现:

long(poverb.tangibles[1]*1000)

产生了我见过的最大的数字。

呃,我没有阅读整个 Python 教程或它的文档。我是否错过了有关如何float工作的关键信息?

编辑:

>>> poverb.tangibles[1]
u'1038277'
4

1 回答 1

17

您可能错过的是有关乘法如何在字符串上工作的文档。您的tangibles列表包含字符串tangibles[1]是一个字符串。 tangibles[1]*1000是那个字符串重复了 1000 次。在该字符串上调用floatorlong会将其解释为一个数字,从而创建一个巨大的数字。如果你这样做float(tangibles[1]),你只会得到实际的数字,而不是重复 1000 次的数字。

您所看到的与此示例中的情况相同:

>>> x = '1'
>>> x
'1'
>>> x*10
'1111111111'
>>> float(x)
1.0
>>> float(x*10)
1111111111.0
于 2012-08-10T07:37:03.383 回答