我的Python代码对我做了一些奇怪的事(或者我的数字,而不是):
A)
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'
答案 0 :(得分:17)
你可能错过的是关于乘法如何对字符串起作用的文档。您的tangibles
列表包含字符串。 tangibles[1]
是一个字符串。 tangibles[1]*1000
该字符串重复1000次。在该字符串上调用float
或long
会将其解释为数字,从而创建一个巨大的数字。如果您改为float(tangibles[1])
,则只能获得实际数字,而不是重复1000次的数字。
您所看到的与此示例中的内容相同:
>>> x = '1'
>>> x
'1'
>>> x*10
'1111111111'
>>> float(x)
1.0
>>> float(x*10)
1111111111.0