3

私の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'
4

1 に答える 1

17

おそらく見逃しているのは、乗算が文字列でどのように機能するかについてのドキュメントです。あなたのtangiblesリストには文字列が含まれています。 tangibles[1]は文字列です。 tangibles[1]*1000その文字列は1000回繰り返されます。floatその文字列に対してorを呼び出すlongと、それが数値として解釈され、膨大な数が作成されます。代わりに を実行する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 に答える