str - python sprintf




Python decimale a stringa (4)

Ci sono tonnellate di argomenti qui che spiegano come convertire una stringa in un decimale, ma come posso convertire un decimale in una stringa?

Come se l'avessi fatto:

import decimal
dec = decimal.Decimal('10.0')

Come dovrei prendere dec e ottenere '10.0' (una stringa)?


Quasi tutti i built-in funzionano sulla classe Decimal come ci si aspetterebbe:

>>> import decimal
>>> dec=decimal.Decimal('10.0')

Una stringa:

>>> str(dec)
'10.0'

Un galleggiante:

>>> float(dec)
10.0

Un int:

>>> int(dec)
10

Rappresentazione di oggetti (come sarebbe nell'interprete interattivo):

>>> repr(dec)
"Decimal('10.0')"

Numero razionale:

>>> import fractions
>>> fractions.Fraction(decimal.Decimal('0.50'))
Fraction(1, 2)

Si noti che l'utilizzo della formattazione della stringa %f sembra sia convertirsi prima in un float (o solo emettere un numero limitato di cifre decimali) e quindi perdere precisione. È necessario utilizzare %s o str() per visualizzare il valore completo memorizzato nel decimale.

Dato:

from decimal import Decimal
foo = Decimal("23380.06198573179271708683473")
print("{0:f}".format(foo))
print("%s" % foo)
print("%f" % foo)

Uscite:

23380.06198573179271708683473
23380.06198573179271708683473
23380.061986

(ed: aggiornato per riflettere @ commento di Mark.)


Usa la funzione di formato stringa:

>>> from decimal import Decimal
>>> d = Decimal("0.0000000000000123123")
>>> s = '{0:f}'.format(d)
>>> print(s)
0.0000000000000123123

Se scrivi semplicemente il numero cast in una stringa non funzionerà per gli esponenti:

>>> str(d)
'1.23123E-14' 

import decimal
dec = decimal.Decimal('10.0')
string_dec = str(dec)






decimal