我的python代码做了一些奇怪的事情(或者我的数字,更确切地说):
(一)
float(poverb.tangibles[1])*1000
1038277000.0
(二)
float(poverb.tangibles[1]*1000)
inf
结果发现:
long(poverb.tangibles[1]*1000)
产生了我见过的最大的数字。
呃,我没读过整个python教程,也没读过doc。我错过了一些关于
float
如何工作的重要信息了吗?编辑:
>>> poverb.tangibles[1]
u'1038277'
最佳答案
您可能遗漏了有关乘法如何在字符串上工作的文档。您的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