wake-up-neo.com

Python Decimal to String

Hier finden Sie unzählige Themen, in denen erläutert wird, wie eine Zeichenfolge in eine Dezimalzahl konvertiert wird. Wie konvertiere ich eine Dezimalzahl zurück in eine Zeichenfolge?

Als ob ich das getan hätte:

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

Wie würde ich dec nehmen und '10.0' (ein String) raus?

36
gfrung4

Verwenden Sie die str() builtin , die:

Gibt eine Zeichenfolge zurück, die eine gut druckbare Darstellung eines Objekts enthält.

Z.B:

>>> import decimal
>>> dec = decimal.Decimal('10.0')
>>> str(dec)
'10.0'
50
Gareth Latty

Verwenden Sie die Zeichenfolgenformatfunktion:

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

Wenn Sie nur die Zahl in eine Zeichenfolge umwandeln, funktioniert dies für Exponenten nicht:

>>> str(d)
'1.23123E-14' 
28
Matthew Roberts
import decimal
dec = decimal.Decimal('10.0')
string_dec = str(dec)
4
mVChr

Fast alle integrierten Funktionen funktionieren erwartungsgemäß in der Decimal-Klasse:

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

Ein Faden:

>>> str(dec)
'10.0'

Ein Schwimmer:

>>> float(dec)
10.0

Ein int:

>>> int(dec)
10

Objektdarstellung (wie im interaktiven Interpreter):

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

Rationale Zahl:

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

Beachten Sie, dass die Verwendung der Zeichenfolgenformatierung %f Entweder zuerst in einen Gleitkommawert konvertiert wird (oder nur eine begrenzte Anzahl von Dezimalstellen ausgibt) und daher an Genauigkeit verliert. Sie sollten %s Oder str() verwenden, um den vollständigen Wert anzuzeigen, der in der Dezimalzahl gespeichert ist.

Gegeben:

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

Ausgänge:

23380.06198573179271708683473
23380.06198573179271708683473
23380.061986

(ed: aktualisiert, um @ Marks Kommentar widerzuspiegeln.)

1
Ryan