Python提供了一个方便的方法long()来将字符串转换为long:
long('234')
将'234'转换为长
如果用户键在234.89然后python将引发错误消息:
ValueError: invalid literal for long()
with base 10: '234.89'
我们应该如何处理python程序员处理带有小数值的字符串的场景?
谢谢=)
答案 0 :(得分:30)
long
只能接受以字母10为基数的字符串敞篷车。因此,小数会造成伤害。在调用float
之前,您可以执行long
的值。如果您的程序在Python 2.x上,其中int和long差异很重要,并且您确定不使用大整数,那么使用int
来提供密钥也可以。
所以,答案是long(float('234.89'))
,如果你没有使用大整数,它可能只是int(float('234.89'))
。另请注意,Python 3中不会出现这种差异,因为默认情况下int会升级为long。 python3中的所有整数都很长,而隐藏的调用只是int
答案 1 :(得分:13)
好吧,多头除了整数外不能容纳任何东西。
一种选择是使用浮动:float('234.89')
另一种选择是截断或舍入。从float转换为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