Python十进制。十进制-getcontext()。prec设置和输出中的小数位数

时间:2018-09-04 17:44:16

标签: python floating-point decimal rounding precision

我想对使用十进制。十进制转换的数字字符串进行算术运算。我希望返回的结果有两个小数,而不考虑转换后的数字字符串有多少个小数。

在这种特殊情况下,为什么两个十进制精度给我一个十进制收益,为什么三个十进制精度给我我想要的收益(2个十进制-> 2.15)

from decimal import *
getcontext().prec = 2
a = Decimal(x.replace(',','.'))
b = Decimal(y.replace(',','.'))
print(a), print(b), print(a-b)
>>> 2.60 0.45 2.2

getcontext().prec = 3
a = Decimal(x.replace(',','.'))
b = Decimal(y.replace(',','.'))
print(a, b, a-b)
>>> 2.60 0.45 2.15

1 个答案:

答案 0 :(得分:0)

getcontext().prec设置数字的精度,十进制 lib将用于返回任何计算出的数字,即prec = 2将返回2个数字(first = 2,second = 2 ),然后在prec = 3中将显示三个数字(first = 2,second = 1,third = 5)。

但是,这里有一个窍门。创建a和b变量时,小数用作精确度是您赋予它的数字的位数。您会看到只需在IDLE中调用a或b。