当我尝试使用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
答案 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'))