从浮点数据转换为Decimal类型
from decimal import *
Decimal.from_float(12.222)
# 结果为Decimal('12.2219999999999995310417943983338773250579833984375')
通过设定有效数字,限定结果样式:
from decimal import *
getcontext().prec = 6
Decimal(1)/Decimal(7)
# 结果为Decimal('0.142857'),六个有效数字
四舍五入,保留几位小数
from decimal import *
Decimal('50.5679').quantize(Decimal('0.00'))
# 结果为Decimal('50.57'),结果四舍五入保留了两位小数
def str_dec(sql_obj):
"""序列化Decimal对象"""
lst = []
for tp in sql_obj:
tpl = []
for i in tp:
if isinstance(i, decimal.Decimal):
i = float(i.quantize(Decimal('0.0')))
tpl.append(i)
lst.append(tuple(tpl))
return lst