Comment obtenir les chiffres après la virgule ?
Par exemple, si j'ai 5.55
comment puis-je obtenir .55
?
Comment obtenir les chiffres après la virgule ?
Par exemple, si j'ai 5.55
comment puis-je obtenir .55
?
Parfois, les zéros de queue sont importants
In [4]: def split_float(x):
...: '''split float into parts before and after the decimal'''
...: before, after = str(x).split('.')
...: return int(before), (int(after)*10 if len(after)==1 else int(after))
...:
...:
In [5]: split_float(105.10)
Out[5]: (105, 10)
In [6]: split_float(105.01)
Out[6]: (105, 1)
In [7]: split_float(105.12)
Out[7]: (105, 12)
Les nombres flottants ne sont pas stockés au format décimal (base 10). Consultez l'article documentation python sur ce sujet pour vous en convaincre. Par conséquent, il n'est pas conseillé d'obtenir une représentation en base10 à partir d'un flottant.
Il existe désormais des outils qui permettent de stocker des données numériques au format décimal. Vous trouverez ci-dessous un exemple utilisant le Decimal
bibliothèque.
from decimal import *
x = Decimal('0.341343214124443151466')
str(x)[-2:] == '66' # True
y = 0.341343214124443151466
str(y)[-2:] == '66' # False
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.
2 votes
En rapport : En Python, comment diviser un nombre par le point décimal ?
0 votes
Je pense que vous devriez modifier la réponse acceptée à ce sujet. J'ai failli ne pas faire défiler le texte jusqu'à la réponse votée x10 fois, et cela m'aurait fait mal plus tard.
0 votes
Je pense que c'est une approche simple :
float( '0.' + str(5.55).split('.')[1] )
>>> 0.55. Mais si quelqu'un pense différemment, faites-le moi savoir.