Salut !
Je vois que tu es nouveau, bienvenue sur Zeste de Savoir !
En effet, le problème vient bien du int
. Pour comprendre, il faut savoir que int
est la contraction du mot anglais integer
, qui veut dire « entier ». C’est donc un type qui est sensé contenir des nombres entiers, c’est-à-dire sans partie décimale. Si tu essaie avec 2
, tout devrait marcher sans problème, car deux est bien un entier. En revanche, 2.5
ne peut être converti tel que puisqu’il contient une partie décimale (0.5
).
Pour représenter un nombre avec une partie décimale, il faut utiliser le type float
(« flottant »), qui contient un nombre dit « à virgule flottante », c’est-à-dire que la virgule peut prendre des positions différentes, elle peut-être après une partie entière à 2 chiffres comme à 12 chiffres.
Quand tu écrit dans ton terminal un nombre avec une virgule (ou plus exactement, avec un point, puisque Python est anglophone), il créé un float. Pour t’en convaincre, tu peux faire ceci.
>>> type(2)
<class 'int'>
>>> type(2.5)
<class 'float'>
Bien sur, tous les calculs marchent de la même façon avec des int
ou des float
. D’ailleurs, certains calculs (les divisions, notamment) avec des entiers renvoient des flottants.
>>> 4 / 2
2.0
>>> type(2.0)
<class 'float'>
Il y a d’ailleurs une petite expérience amusante à tenter : calculer 0.1 + 0.2
. Logiquement, la réponse devrait être 0.3
. Pourtant…
>>> 0.1 + 0.2
0.30000000000000004
Oui, ça surprend, mais c’est "normal". Tu sais sans doute que les ordinateurs enregistrent tout en binaire. Or, il se trouve que "0.1" ne tombe pas juste en binaire, et Python enregistre donc une approximation de "0.1". Dans la plupart des cas, ça ne pose pas trop de problème (ici, l’erreur se situe tout de même 16 chiffres après la virgule, ce qui est négligeable), mais c’est quand même bon à savoir.
Python fournit de base un module pour ce genre de cas, qui s’appelle decimal
.
>>> from decimal import Decimal
>>> Decimal("0.1") + Decimal("0.2")
Decimal('0.3')
Petit bonus : Pour utiliser le nombre pi, tu peux importer le module math
et utiliser math.pi
.
>>> import math
>>> math.pi
3.141592653589793