0
2.7只是移動到3.4我遇到了這個問題與十進制:的Python 3個小模塊,並限制小數長度
我試圖複製SQL數字數據類型與decimal
模塊。 在2.7,我這樣做:
def copy_ctx(places, prec):
res = DefaultContext.copy()
res.prec = places
res.Emin = res.Emax = places - prec - 1
return res
這有效地限制由此產生的任何Decimal
s到的地方或更少的指定數量。 試圖實例化一個太大的數字將產生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
不會讓我設置額敏爲正數。
我該如何達到2.7中的相同行爲?
我曾考慮允許一個積極的Emin作爲Python 2.7中的一個bug,真的。使用它來設置整數部分的上限是.. creative。 –
該限制在[new C optimisations](http://bugs.python.org/issue7652)中執行;唯一的解決辦法是禁用'_decimal'模塊(例如將其從安裝中徹底刪除)。 **不建議。我還沒有在這裏看到一條替代路線。 –
你是什麼意思「創意」?還有另一種設置Decimal可以使用的最大位數的方法嗎? – velis