[英]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.