使用Python的“浮动”功能时,为什么这些结果如此不同?

时间:2012-08-10 07:30:43

标签: python math floating-point type-conversion converter

我的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'

1 个答案:

答案 0 :(得分:17)

你可能错过的是关于乘法如何对字符串起作用的文档。您的tangibles列表包含字符串tangibles[1]是一个字符串。 tangibles[1]*1000该字符串重复1000次。在该字符串上调用floatlong会将其解释为数字,从而创建一个巨大的数字。如果您改为float(tangibles[1]),则只能获得实际数字,而不是重复1000次的数字。

您所看到的与此示例中的内容相同:

>>> x = '1'
>>> x
'1'
>>> x*10
'1111111111'
>>> float(x)
1.0
>>> float(x*10)
1111111111.0