Возврат значения «Десятичное» возвращает десятичное значение («значение»), а при печати - PullRequest
0 голосов
/ 24 мая 2019

Когда я возвращаю десятичное значение и печатаю его:

return Decimal(number).quantize(Decimal(str(1 / 10 ** digits)), rounding=ROUND_HALF_UP)

, он печатает вывод в этом Decimal('')

Пример:

[Decimal('1.20') Decimal('1.22') Decimal('1.42') Decimal('1.75') Decimal('2.77')]

Но когдаЯ печатаю значение в самой функции, оно печатает только значение.

Пример:

1.20
1.20
1.22
1.42
1.75
2.77

Как только я выйду из функции, как я могу получить числовое значение без его нахождения внутри Decimal('')

Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Когда я возвращаю десятичное значение и печатаю его:

возвращает десятичное число (число) .quantize (десятичное число (dstr (1/10 ** цифры)), округление = ROUND_HALF_UP)

печатает выходные данные в пределах этого десятичного числа ('')

Это не так.Вы не распечатали это.Ваш переводчик отобразил что-то после возврата значения.Фактически он решил отобразить строку, возвращаемую <your_decimal_object>.__repr__()

Когда вы вызываете print, вы отображаете строку, возвращаемую <your_decimal_object>.__str__()

>>> from decimal import Decimal

>>> def decimal_function(number, digits, ROUND_HALF_UP):
        return Decimal(number).quantize(Decimal(str(1 / 10 ** digits)), rounding=ROUND_HALF_UP)

>>> a = decimal_function(1.0, 2, 'ROUND_HALF_UP')

>>> a

Decimal('1.00') 

>>> print(a)

1.00

>>> repr(a) # same as a.__repr__()

"Decimal('1.00')"

>>> str(a) # same as a.__str__()

'1.00'

Читать this чтобы понять различные цели repr и str

0 голосов
/ 24 мая 2019

Не уверен, что значения number и digits, но сказать:

from decimal import *
number = 10
digits = 2

x = Decimal(number).quantize(Decimal(str(1 / 10 ** digits)), rounding=ROUND_HALF_UP)

print(x)
>>> Decimal('10.00')
type(x)
>>> <class 'decimal.Decimal'>
float(x)
>>> 10.0
...