python - 为什么在使用 Python 的 "float"函数时这些结果如此不同?

标签 python math floating-point type-conversion converters

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

一)

float(poverb.tangibles[1])*1000
1038277000.0

二)

float(poverb.tangibles[1]*1000)
inf

导致发现:

long(poverb.tangibles[1]*1000)

产生了我见过的最大数字。

呃,我没有阅读整个 Python 教程或它的文档。我是否遗漏了一些有关 float 工作原理的关键信息?

编辑:

>>> poverb.tangibles[1]
u'1038277'

最佳答案

您可能错过了关于乘法如何作用于字符串的文档。您的有形 Assets 列表包含字符串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

关于python - 为什么在使用 Python 的 "float"函数时这些结果如此不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11897260/

相关文章:

android - 如何在android studio中编写平方根

java - 令人困惑的返回声明

Python 在 IDLE 中重启 shell

Python:如何从文本文件中分割位置数据

math - 权力总和

c - sprintf float 的正确方法是什么?

java - 打印前 3 位小数而不四舍五入

python 字典-每个值的两个键

python - 如何将一个 Python 对象的所有属性复制到另一个对象?

math - 3D 中圆和弧的边界框