为什么要转换为 2 位小数的数字?
x = 369.69
y=decimal.Decimal(x)
Decimal('369.68999999999999772626324556767940521240234375')
即使我已经声明
getcontext().prec = 2
?
那么为什么如果我尝试让汇总得到370.00
:
y.quantize(decimal.Decimal('0.01'),rounding=decimal.ROUND_UP)
最终出现此错误:
InvalidOperation: quantize result has too many digits for current context quantize result has too many digits for current context
最佳答案
问题是 x
是一个 float ,因此一旦分配给 x 就会失去精度。如果您想解决此问题,可以将 x
设为字符串 "369.69"
。从字符串构建的 Decimal
将具有精确的精度。
关于Python 十进制 ROUND_UP InvalidOperation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29081731/