Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python浮点到整数转换_Python_Floating Point - Fatal编程技术网

python浮点到整数转换

python浮点到整数转换,python,floating-point,Python,Floating Point,我有一个让我发疯的问题。通常执行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'是一个字符串,而不是一个浮点数;您可以通过错误消息中的单引号来判断

我有一个让我发疯的问题。通常执行
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
截断它,可以从中获取
int

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

(虽然您可能希望在字典中存储浮点数而不是字符串,因为这似乎是您所期望的。)

看起来值是字符串,而不是浮点数。因此,您需要
int(float(gex_dict[i]))
问题是您有一个字符串而不是一个float,请将此作为比较:

>>> 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'
因此,在您的情况下:

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

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

int的文档可在以下位置找到:

您能在
gex\u dict
中发布您的内容类型吗。我想你有一些看起来像浮点数的字符串,而不是浮点数。嗨,Jamylak,是的,你是对的,那些是字符串而不是浮点数,谢谢!
levels = [int(float(gex_dict[i])) for i in sorted(gex_dict.keys())]