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

45 投票
2 回答
150435 浏览
提问于 2025-04-16 10:29

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

long('234') 

; 这个方法可以把 '234' 转换成长整型

但是如果用户输入的是 234.89,Python 就会报错:

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

那么作为一个 Python 程序员,我们应该如何处理包含小数的字符串呢?

谢谢 =)

2 个回答

17

好吧,long类型只能存整数。

一个选择是使用浮点数,也就是小数,比如:float('234.89')

另一个选择是截断或四舍五入。把浮点数转换成long类型时,会自动截断: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
38

在编程中,long类型只能接受那些可以转换为字符串的数字,而且这些数字必须以10进制的形式结束。所以,出现小数点就会出问题。你可以在调用long之前先把这个值转换成float类型。如果你的程序是在Python 2.x版本中,intlong的区别很重要,而你又确定不会使用很大的整数,那么其实只用int来提供这个键也是可以的。

所以,解决办法是使用long(float('234.89')),或者如果你不需要处理大整数的话,可以直接用int(float('234.89'))。另外要注意的是,在Python 3中就没有这个区别了,因为int默认就升级成了long。在Python 3中,所有的整数都是long,所以转换时只需要用int就可以了。

撰写回答