为什么在使用int()函数将float转换为integer时出现错误?

时间:2019-06-21 00:55:47

标签: python

当我尝试使用int()函数将浮点数转换为整数时,为什么会出错?

>>> int('99.99')
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    int('99.99')
ValueError: invalid literal for int() with base 10: '99.99'

我希望结果是99

3 个答案:

答案 0 :(得分:2)

您的参数不是浮点数,而是一个包含浮点数表示形式的字符串。您必须先将其转换为浮点数,然后才能将其转换为整数。

int(float('99.99'))

答案 1 :(得分:0)

根据docs

  

返回由数字或字符串x构成的整数对象,或者   如果未提供任何参数,则返回0。如果x是数字,则返回   x。 int ()。对于浮点数,它会截断为零。

     

如果x不是数字或给出基数,则x必须是字符串,   字节或字节数组实例,表示基数中的整数文字   基地。

要特别注意“代表整数文字” 。因此,您尝试转换的str不能是浮点数,因为这是浮点数文字,而不是int文字。

因此,正如其他人所指出的那样,您不能直接从浮点文字转换为int,需要首先转换float

x = '123.45'

int(float(x))

答案 2 :(得分:0)

由于ValueError的重载参数与Python文档不一致,因此您得到了int()

根据文档:

  

”如果x不是数字或给定基数,则x必须是字符串或   表示整数文字“

”的Unicode对象

基本上,x(在您的情况下为'99 .99')是字符串99.99,它不满足成为整数文字的要求。您提供了一个浮动文字。

TL; DR

int(float('99.99'))