43 votes

conversion d'une chaîne de caractères en un long en python

Python fournit une méthode pratique, long(), pour convertir une chaîne de caractères en long :

long('234') 

; convertit '234' en un long

Si l'utilisateur tape 234.89, python affichera un message d'erreur :

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

Comment un programmeur python doit-il gérer les scénarios où une chaîne de caractères contient une valeur décimale ?

Merci =)

36voto

Senthil Kumaran Points 14934

long ne peut prendre que des chaînes convertibles qui peuvent se terminer par un chiffre en base 10. C'est donc la décimale qui cause le problème. Ce que vous pouvez faire est, float la valeur avant d'appeler le long . Si votre programme est sous Python 2.x où la différence entre int et long est importante, et que vous êtes sûr de ne pas utiliser de grands entiers, vous auriez pu vous contenter d'utiliser int pour fournir la clé également.

Donc, la réponse est long(float('234.89')) ou cela pourrait être simplement int(float('234.89')) si vous n'utilisez pas de grands nombres entiers. Notez également que cette différence ne se produit pas dans Python 3, car int est transformé en long par défaut. Tous les entiers sont des long en Python 3 et l'appel à covert est simplement int

17voto

payne Points 5933

Eh bien, les longs ne peuvent pas contenir autre chose que des entiers.

Une option consiste à utiliser un flotteur : float('234.89')

L'autre option consiste à tronquer ou à arrondir. La conversion d'un flottant en long tronquera les données pour vous : 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X