【问题标题】:Why are these results so different when using Python's "float" function?为什么在使用 Python 的“float”函数时这些结果会如此不同?
【发布时间】:2012-08-07 11:53:54
【问题描述】:

我的 Python 代码对我(或者是我的数字)做了一些奇怪的事情:

一)

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'

【问题讨论】:

  • 如果你给我们poverb.tangibles[1]的值,这个问题会更容易回答
  • +1 获取建设性反馈。最好的。地点。永远。

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


【解决方案1】:

您可能错过了有关乘法如何在字符串上工作的文档。您的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

【讨论】:

  • 是的,字符串“乘法”确实令人惊讶,但由于它实际上是序列乘法(其中字符串是一种序列),它是语言的一部分并且不会消失。同样,string % integer 也不是您可能猜到的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2022-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多