Python 为什么在使用int()函数将浮点转换为整数时出错?
当我试图使用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('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()
将字符串转换为整数,如果它包含整数的表示形式。如果小数点后有数字,则它不是有效的整数。