172 votes

Comment obtenir les chiffres après la virgule ?

Comment obtenir les chiffres après la virgule ?

Par exemple, si j'ai 5.55 comment puis-je obtenir .55 ?

2 votes

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.

4voto

Sony Points 43

En utilisant un simple opérateur Division "/". y division du sol "// vous pouvez facilement obtenir la partie fractionnée de n'importe quel flottant.

number = 5.55

result = (number/1) - (number//1)

print(result)

3voto

George Fisher Points 521

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)

3voto

camilom108 Points 11

Un autre exemple utilisant modf

from math import modf
number = 1.0124584

# [0] decimal, [1] integer
result = modf(number)
print(result[0])
# output = 0124584
print(result[1])
# output = 1

2voto

kurian Points 98

Voici une solution que j'ai essayée :

num = 45.7234
(whole, frac) = (int(num), int(str(num)[(len(str(int(num)))+1):]))

2voto

jpp Points 83462

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.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