我有一個計算方法,當用戶使用Cartridge
作爲我的商店框架檢出時計算稅。十進制不是JSON可序列化
tax = tax * Decimal(str(settings.SHOP_DEFAULT_TAX_RATE))
計算工作properly.I然後傳遞到tax
set_tax(request, _("GST+PST"), tax)
當我這樣做,我得到一個錯誤Decimal('12.0') is not JSON serializable
。
當我將它轉換爲浮動(set_tax(request, _("GST+PST"), float(tax))
它的工作原理;但是當我經過結帳我得到這個錯誤:
unsupported operand type(s) for +=: 'Decimal' and 'float'
在我的設置:
SHOP_DEFAULT_TAX_RATE = 0.12
我見過我需要使用自定義JSONEncoder但錯誤的解決方案r發生在Django內部。
謝謝。
相關http://stackoverflow.com/q/1960516/674039 – wim
出於好奇,爲什麼你需要小數?如果你正在處理稅款(金額),浮動精度應該沒問題,除非你打算處理ALOT現金...... – mgilson
@mgilson:實際上,情況正好相反;問題是,金錢不是衡量儀表的敏感度;財務計算中的精確度概念是荒謬的。 '0.02美元* *正好*兩美分;不是兩美分加上或減去半分。 – SingleNegationElimination