如何将Decimal类型值转为原始数值存入Python字典?
解决Decimal类型存入字典后显示问题
嘿,我来帮你搞定这个问题~
你现在遇到的核心点是:你把transaction_amount转换成了Decimal类型,所以字典里存储的自然是一个Decimal对象,Python打印对象时会默认显示它的类型和内部值,这就是为什么你看到Decimal('100.03')的原因。
如果你确实想让字典里存储的是原始的浮点数形式(100.03),可以参考下面的方案,但要先提醒你一个重要细节:浮点数本身是有精度缺陷的,100.03作为float其实无法被精确存储,底层可能是类似100.02999999999999的数值,只是打印时被优化显示成了100.03。如果是涉及金融、精确计算的场景,更推荐保留Decimal类型,只是在展示时做格式化处理。
方案1:将Decimal转换为float存入字典
直接用float()函数把Decimal对象转成浮点数,这样字典里就会存储浮点数类型的值:
from decimal import * transaction_amount = 100.03 transaction_amount = Decimal(str(transaction_amount)) # 转换为float类型后存入字典 item = { 'transaction_amount': float(transaction_amount) } print(item) # 输出: {'transaction_amount': 100.03}
方案2:保留Decimal类型,仅在打印时格式化显示(推荐用于精确计算场景)
如果不想丢失精度,只是希望打印结果看起来像100.03,可以在打印时对Decimal对象做格式化处理:
from decimal import * transaction_amount = 100.03 transaction_amount = Decimal(str(transaction_amount)) item = { 'transaction_amount': transaction_amount } # 格式化打印字典 print({k: float(v) if isinstance(v, Decimal) else v for k, v in item.items()}) # 或者用更精确的字符串格式化 print(f"{{'transaction_amount': {transaction_amount}}}")
这样既保留了Decimal的精度优势,又能得到你想要的显示效果。
内容的提问来源于stack exchange,提问作者j panton
相关产品推荐
相关产品推荐

