在Python中将字符串转换为长整型

45

Python提供了一个方便的方法long()来将字符串转换为长整型:

long('234') 

; 将 '234' 转换为 long 类型

如果用户输入 234.89,则 Python 会抛出一个错误信息:

ValueError: invalid literal for long()
with base 10: '234.89'

作为一名 Python 程序员,当遇到包含十进制值的字符串时应该如何处理?

谢谢 =)


2
将其转换为浮点数?捕获错误并向用户报告? - John
6
这个问题及其答案仅适用于Python 2。Python 3不再有长整型(long type),请参考http://python3porting.com/differences.html#long。 - hertzsprung
2个回答

38

long只能接受以10进制表示的字符串,因此十进制数会导致错误。你可以在调用long之前对值进行float转换。如果你的程序运行在Python 2.x版本中,而且你确定不使用大整数,那么使用 int 也可以提供键。

因此,答案是long(float('234.89')),或者如果没有使用大整数,则可以使用int(float('234.89'))。同样需要注意的是,这种差异在Python 3中不存在,因为int已默认升级为长整型(long)。在Python 3中,所有整数都是long类型,转换调用只需使用int.


2
int('234.89') 失败,与问题中显示的错误相同。 - payne
@payne- 感谢指出。我已经纠正了它。你的是正确的。 - Senthil Kumaran

17

长整型只能存储整数。

其中一种方法是使用浮点数: float('234.89')

另一种方法是截断或四舍五入。将浮点数转换为长整型时会自动截断:long(float('234.89'))

>>> long(float('1.1'))
1L
>>> long(float('1.9'))
1L
>>> long(round(float('1.1')))
1L
>>> long(round(float('1.9')))
2L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接