Il y a des tonnes de sujets ici qui expliquent comment convertir une chaîne en décimal, mais comment puis-je reconvertir une décimale en chaîne?
Comme si je faisais ça:
import decimal
dec = decimal.Decimal('10.0')
Comment pourrais-je prendre dec
et obtenir '10.0'
(une chaîne)?
Utilisez la str()
intégrée , qui:
Renvoie une chaîne contenant une représentation bien imprimable d'un objet.
Par exemple:
>>> import decimal
>>> dec = decimal.Decimal('10.0')
>>> str(dec)
'10.0'
Utilisez la fonction de format de chaîne:
>>> from decimal import Decimal
>>> d = Decimal("0.0000000000000123123")
>>> s = '{0:f}'.format(d)
>>> print(s)
0.0000000000000123123
Si vous tapez simplement cast le nombre dans une chaîne, cela ne fonctionnera pas pour les exposants:
>>> str(d)
'1.23123E-14'
import decimal
dec = decimal.Decimal('10.0')
string_dec = str(dec)
Presque tous les éléments intégrés fonctionnent sur la classe Decimal comme vous vous en doutez:
>>> import decimal
>>> dec=decimal.Decimal('10.0')
Un string:
>>> str(dec)
'10.0'
Un flotteur:
>>> float(dec)
10.0
Un int:
>>> int(dec)
10
Représentation d'objets (comme ce serait dans l'interpréteur interactif):
>>> repr(dec)
"Decimal('10.0')"
Nombre rationnel:
>>> import fractions
>>> fractions.Fraction(decimal.Decimal('0.50'))
Fraction(1, 2)
Notez que l'utilisation de la mise en forme de chaîne %f
Semble soit convertir en un flottant en premier (ou produire uniquement un nombre limité de décimales) et perd donc sa précision. Vous devez utiliser %s
Ou str()
pour afficher la valeur complète stockée dans la décimale.
Donné:
from decimal import Decimal
foo = Decimal("23380.06198573179271708683473")
print("{0:f}".format(foo))
print("%s" % foo)
print("%f" % foo)
Les sorties:
23380.06198573179271708683473
23380.06198573179271708683473
23380.061986
(ed: mis à jour pour refléter le commentaire de @ Mark.)