刚从2.7移动到3.4我遇到了这个问题,带有十进制:
我正在尝试使用decimal
模块复制SQL数值数据类型。
在2.7中,我这样做了:
def copy_ctx(places, prec):
res = DefaultContext.copy()
res.prec = places
res.Emin = res.Emax = places - prec - 1
return res
这有效地将任何结果Decimal
限制为指定的地点数或更少。
尝试实例化一个太大的数字会产生OverflowError
。
例如:
x = Decimal(1000000, copy_ctx(5,2)) # Error! number is too much
x = Decimal(100, copy_ctx(5,2)) # == 100.00
但是,在Python 3.4中,decimal
不允许我将Emin设置为正数。
如何实现与2.7相同的行为?
答案 0 :(得分:0)
好吧,最终甚至2.7版本的decimal
模块也不完全是SQL Numeric友好的。我必须根据我想要的背景检查每一个结果。我现在在类构造函数中添加了一个额外的量化步骤。