2011-01-24 3 views
29

Python обеспечивает удобный способ длинного(), чтобы преобразовать строку длиной:преобразование строки длиной в Python

long('234') 

; преобразует «234» в длинную

Если ключи пользователя в 234.89, то питон поднимет сообщение об ошибке:

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

Как мы должны питон программист обрабатывает сценарии, где строка с десятичным значением?

Спасибо =)

+2

конвертировать его в float? Поймать ошибку и сообщить пользователю? – John

+4

Этот вопрос и его ответы относятся только к Python 2. Python 3 больше не имеет длинного типа, см. Http://python3porting.com/differences.html#long – hertzsprung

ответ

25

long может принимать только строковые кабриолеты, которые могут положить конец в базовой 10 цифры. Таким образом, десятичный знак причиняет вред. Что вы можете сделать, это float значение перед вызовом long. Если ваша программа находится на Python 2.x, где важны значения int и long, и вы уверены, что не используете большие целые числа, вы могли бы просто отлично использовать int, чтобы предоставить ключ.

Итак, ответ long(float('234.89')), или это может быть только int(float('234.89')), если вы не используете большие целые числа. Также обратите внимание, что эта разница не возникает в Python 3, так как по умолчанию функция int обновляется дольше. Все целые числа длинны в python3, а вызов для скрытых - это только int

+0

Спасибо, это действительно полезно – zfranciscus

+2

int ('234.89') с той же ошибкой, что и в вопросе. – payne

+0

@ платитьne- спасибо для пункт. Я исправил это. Ты прав. –

12

Ну, тоскует не может ничего, кроме целых держать.

Одним из вариантов является использование поплавка: 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 
Смежные вопросы