在Python中将字符串转换为长整型
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版本中,int
和long
的区别很重要,而你又确定不会使用很大的整数,那么其实只用int
来提供这个键也是可以的。
所以,解决办法是使用long(float('234.89'))
,或者如果你不需要处理大整数的话,可以直接用int(float('234.89'))
。另外要注意的是,在Python 3中就没有这个区别了,因为int
默认就升级成了long
。在Python 3中,所有的整数都是long
,所以转换时只需要用int
就可以了。