Python 2.7 Python Decimal()| Decimal.invalidooperation

Python 2.7 Python Decimal()| Decimal.invalidooperation,python-2.7,python-3.7,Python 2.7,Python 3.7,我想克服从python 2迁移到python 3时遇到的十进制问题 Python 2.7: >>十进制('333')。量化(十进制('.01'),四舍五入=十进制。向下四舍五入半) 十进制('333.00') Python 3.7: >>十进制('333')。量化(十进制('.01'),四舍五入=十进制。向下四舍五入半) decimal.invalidooperation:[] 如示例所示,这些python版本之间存在行为变化 我错过什么了吗 欢迎提供任何见解。当decimal.get_co

我想克服从python 2迁移到python 3时遇到的十进制问题

Python 2.7:

>>十进制('333')。量化(十进制('.01'),四舍五入=十进制。向下四舍五入半)
十进制('333.00')
Python 3.7:

>>十进制('333')。量化(十进制('.01'),四舍五入=十进制。向下四舍五入半)
decimal.invalidooperation:[]
如示例所示,这些python版本之间存在行为变化

我错过什么了吗


欢迎提供任何见解。

decimal.get_context().prec
低于您预期的一轮时,请添加此附件

例如:

[3]中的
:从十进制输入十进制
在[4]中:十进制('333')。量化(十进制('.01'),四舍五入=十进制。向下四舍五入半)
Out[4]:十进制('333.00')
在[5]中:decimal.getcontext()
Out[5]:上下文(prec=28,舍入=ROUND_HALF_偶数,Emin=-9999999,Emax=9999999,大写=1,钳制=0,标志=[],陷阱=[无效操作,除以零,溢出])
[6]中:四舍五入(十进制('333'),2)
Out[6]:十进制('333.00')
但如果你这样做了:

导入十进制
在[11]中:context=decimal.getcontext()
在[12]中:context.prec=1
在[13]中:decimal.setcontext(上下文)
在[15]中:十进制('333')。量化(十进制('.01'),四舍五入=十进制。向下四舍五入)
---------------------------------------------------------------------------
无效操作回溯(最近一次呼叫最后一次)
在里面
---->1十进制('333')。量化(十进制('0.01'),四舍五入=十进制。向下四舍五入半)
无效操作:[]
所以请记住,您的context.precision需要大于或等于您的舍入需求