Python 为什么在使用int()函数将浮点转换为整数时出错?

Python 为什么在使用int()函数将浮点转换为整数时出错?,python,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' >>int('99.99') 回溯(最近一次呼叫

当我试图使用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'
>>int('99.99')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
整数('99.99')
ValueError:基数为10的int()的文本无效:“99.99”

我希望结果是99

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

int(float('99.99'))

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

int(float('99.99'))
根据

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

如果x不是一个数字或者如果给定了基数,那么x必须是一个字符串, 字节,或以基数表示整数文字的bytearray实例 基地

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

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

x='123.45'
整数(浮点(x))
根据

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

如果x不是一个数字或者如果给定了基数,那么x必须是一个字符串, 字节,或以基数表示整数文字的bytearray实例 基地

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

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

x='123.45'
整数(浮点(x))

您将得到一个
ValueError
,因为您使用与Python文档不一致的参数重载
int()

根据该文件:

如果x不是一个数字或如果给定了基数,那么x必须是一个字符串或 表示整数文字的Unicode对象“

基本上,x(在您的例子中是'99.99')是字符串99.99,它不满足作为整数文本的要求。您提供了一个浮动文本

TL;博士


您将得到一个
ValueError
,因为您正在使用一个与Python文档不一致的参数重载
int()

根据该文件:

如果x不是一个数字或如果给定了基数,那么x必须是一个字符串或 表示整数文字的Unicode对象“

基本上,x(在您的例子中是'99.99')是字符串99.99,它不满足作为整数文本的要求。您提供了一个浮动文本

TL;博士


你不是在转换一个浮点数,你是在转换一个字符串;您正在尝试转换包含浮点文本的字符串。在“显式优于隐式”的思想中,
int
不会尝试隐式地从字符串到浮点再到int。如果您想这样做,请明确:
int(float('99.99'))
。这应该可以得到您想要的int(float('99.99'))如果您正在从字符串转换为int,则会失败,因为python不希望int中有点。尝试
四舍五入(浮点('99.99))
。也许看看
Math.floor/ceil
,这取决于您希望它如何对您的数字进行四舍五入。您不是在转换浮点,而是在转换字符串。您不是在将浮点转换为整数;您正在尝试转换包含浮点文本的字符串。在“显式优于隐式”的思想中,
int
不会尝试隐式地从字符串到浮点再到int。如果您想这样做,请明确:
int(float('99.99'))
。这应该可以得到您想要的int(float('99.99'))如果您正在从字符串转换为int,则会失败,因为python不希望int中有点。尝试
四舍五入(浮点('99.99))
。也许可以看看
Math.floor/ceil
,这取决于您希望它如何对数字进行四舍五入。谢谢,为什么我可以使用:int('100')获得100,因为
100
是一个整数。
int()
将字符串转换为整数,如果它包含整数的表示形式。如果小数点后有数字,则它不是有效的整数。谢谢,为什么我可以使用:int('100')获得100,因为
100
是整数。
int()
将字符串转换为整数,如果它包含整数的表示形式。如果小数点后有数字,则它不是有效的整数。