我不明白十进制除法背后的逻辑:
from decimal import *
getcontext().prec = 2
这非常有效:
>>> Decimal("11") / 2
Decimal('5.5')
但这已经不是:
>>> Decimal("21") / 2
Decimal('10')
为什么不是“10.5”?...
在你的情况下,这是因为精度不足。值分别舍入为Decimal上下文的“舍入”属性。
如python docs中所述,十进制上下文精度在算术运算期间起作用。精度确定计算的准确性。这意味着根据精度值可能会有不同的结果。
广泛不同的结果表明精度不足,舍入模式问题,病态输入或数值不稳定的算法。
因此,您唯一需要做的就是增加小数精度值。默认情况下,它等于28。
十进制的上下文prec
会考虑数字中的所有数字,而不仅仅是小数点后面的数字。
所以,5.5
有两位数,10
也是如此。如果要查看10.5
,则必须将精度设置为3位数。