繁体   English   中英

python float to int转换

[英]python float to in int conversion

我有一个问题确实使我发疯。 通常执行int(20.0)将得到20 到现在为止还挺好。 但:

levels = [int(gex_dict[i]) for i in sorted(gex_dict.keys())]

gex_dict[i]返回一个浮点数,例如20.0 ,结果为:

"invalid literal for int() with base 10: '20.0'"

我距离捏紧键盘的最后一块仅一步之遥。

'20.0'是一个字符串,而不是float 您可以通过错误消息中的单引号来分辨。 你可以得到一个int首先用它分析出它float ,然后截断它int

>>> int(float('20.0'))
20

(尽管也许您希望在字典中存储浮点数而不是字符串,因为这似乎是您期望的。)

看起来值是一个字符串,而不是浮点数。 所以你需要int(float(gex_dict[i]))

看起来问题在于gex_dict[i]实际上返回浮点数'20.0'的字符串表示形式。 尽管int()具有将浮点数转换为int的能力,并将整数的字符串表示形式转换为int的能力。 它没有能力将float的字符串表示形式转换为int形式。

可以在以下位置找到int的文档: http : //docs.python.org/library/functions.html#int

问题是您有一个字符串而不是一个浮点数,将其作为比较:

>>> int(20.0)
20
>>> int('20.0')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '20.0'

您可以通过先转换为float然后转换为int来解决此问题:

>>> int(float('20.0'))
20

因此,在您的情况下:

levels = [int(float(gex_dict[i])) for i in sorted(gex_dict.keys())]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM