Je passe un nombre flottant au format chaîne dans int('.0')

0.0 est un nombre à virgule flottante valide, alors pourquoi donne-t-il une erreur?

0
Nishant Kadivar 20 nov. 2018 à 04:53

3 réponses

Meilleure réponse

À partir de la documentation de int:

Si x n'est pas un nombre ou si la base est donnée, alors x doit être une chaîne, des octets ou une instance de bytearray représentant un littéral entier dans la base radix. Facultativement, le littéral peut être précédé de + ou - (sans espace entre les deux) et entouré d'espaces.

Il vous donne donc ValueError car la chaîne '.0' ne représente pas un littéral entier.

3
Dani Mesejo 20 nov. 2018 à 02:13

Vous pouvez le faire si vous supprimez les guillemets et en faites un flottant comme:

int(.1)

Mais les chaînes ne fonctionnent pas si à l'intérieur de la chaîne est un flottant, car elles penseront que c'est un nombre et se briseront en disant que '.' n'est pas une valeur numérique, la raison pour laquelle le fonctionnement ci-dessus est également dû au fait que:

>>> .1
0.1
>>> 

Et:

float(0.1)

Travaux.

Notez que même un flottant réel dans une chaîne ne peut pas être converti en entier:

>>> int('3.1')
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    int('3.1')
ValueError: invalid literal for int() with base 10: '3.1'
0
Rudy Velthuis 20 nov. 2018 à 07:10

Parce que vous pouvez taper cast une étape à la fois. Par exemple, vous pouvez convertir float en int ou chaîne en int. Pas une chaîne à virgule flottante qui est ici en 2 étapes.

2
Kireeti K 20 nov. 2018 à 02:00