Ответ 1
Используйте встроенную функцию str()
, которая:
Возвращает строку, содержащую хорошо печатаемое представление объекта.
Например:
>>> import decimal
>>> dec = decimal.Decimal('10.0')
>>> str(dec)
'10.0'
Здесь есть несколько тем, которые объясняют, как преобразовать строку в десятичную, но как преобразовать десятичную цифру в строку?
Как если бы я сделал это:
import decimal
dec = decimal.Decimal('10.0')
Как бы я взял dec
и вытащил '10.0'
(строку)?
Используйте встроенную функцию str()
, которая:
Возвращает строку, содержащую хорошо печатаемое представление объекта.
Например:
>>> import decimal
>>> dec = decimal.Decimal('10.0')
>>> str(dec)
'10.0'
Используйте функцию форматирования строк:
>>> from decimal import Decimal
>>> d = Decimal("0.0000000000000123123")
>>> s = '{0:f}'.format(d)
>>> print(s)
0.0000000000000123123
Если вы просто набираете число в строку, оно не будет работать для экспонентов:
>>> str(d)
'1.23123E-14'
import decimal
dec = decimal.Decimal('10.0')
string_dec = str(dec)
Почти все встроенные функции работают над классом Decimal, как и следовало ожидать:
>>> import decimal
>>> dec=decimal.Decimal('10.0')
Строка:
>>> str(dec)
'10.0'
Поплавок:
>>> float(dec)
10.0
An int:
>>> int(dec)
10
Представление объекта (как это было бы в интерактивном интерпретаторе):
>>> repr(dec)
"Decimal('10.0')"
Рациональное число:
>>> import fractions
>>> fractions.Fraction(decimal.Decimal('0.50'))
Fraction(1, 2)
Обратите внимание, что использование форматирования строки %f
видимому, либо сначала конвертирует в число с плавающей точкой (либо выводит только ограниченное количество десятичных знаков), и поэтому теряет точность. Вы должны использовать %s
или str()
для отображения полного значения, хранящегося в десятичном виде.
Дано:
from decimal import Decimal
foo = Decimal("23380.06198573179271708683473")
print("{0:f}".format(foo))
print("%s" % foo)
print("%f" % foo)
Выходы:
23380.06198573179271708683473
23380.06198573179271708683473
23380.061986
(ed: обновлено, чтобы отразить комментарий @Mark.)