Подтвердить что ты не робот

Десятичное число Python для строки

Здесь есть несколько тем, которые объясняют, как преобразовать строку в десятичную, но как преобразовать десятичную цифру в строку?

Как если бы я сделал это:

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

Как бы я взял dec и вытащил '10.0' (строку)?

4b9b3361

Ответ 1

Используйте встроенную функцию str(), которая:

Возвращает строку, содержащую хорошо печатаемое представление объекта.

Например:

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

Ответ 2

Используйте функцию форматирования строк:

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

Если вы просто набираете число в строку, оно не будет работать для экспонентов:

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

Ответ 3

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

Ответ 4

Почти все встроенные функции работают над классом 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)

Ответ 5

Обратите внимание, что использование форматирования строки %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.)