rof*_*fls 3 python math floating-point converter type-conversion
我的Python代码对我做了一些奇怪的事(或者我的数字,而不是):
一个)
float(poverb.tangibles[1])*1000
1038277000.0
Run Code Online (Sandbox Code Playgroud)
b)
float(poverb.tangibles[1]*1000)
inf
Run Code Online (Sandbox Code Playgroud)
这导致发现:
long(poverb.tangibles[1]*1000)
Run Code Online (Sandbox Code Playgroud)
产生了我见过的最多数字.
嗯,我没有阅读整个Python教程或它的文档.我是否错过了一些关于如何float运作的批评?
编辑:
>>> poverb.tangibles[1]
u'1038277'
Run Code Online (Sandbox Code Playgroud)
Bre*_*arn 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
Run Code Online (Sandbox Code Playgroud)