返回'Decimal'值时,打印时不返回Decimal('value')

时间:2019-05-24 09:27:58

标签: python decimal

当我返回一个十进制值并打印时:

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 :(得分:0)

不确定numberdigits的值是什么,但请说:

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

答案 1 :(得分:0)

  

当我返回一个十进制值并打印时:

     

返回Decimal(number).quantize(Decimal(dstr(1/10 ** digits)),   rounding = ROUND_HALF_UP)

     

它将在此Decimal('')中打印输出

那是不对的。您没有打印出来。您的解释器在返回值后显示了一些内容。实际上,它选择显示<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

的不同目的。