You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何让Decimal对象输出为纯数值而非Decimal('num')格式

问题描述

执行以下Python代码:

from decimal import Decimal

num = Decimal(171.33334060048446)

json_dict = {
    "num": num
}

print(json_dict)

实际输出:

{'num': Decimal('171.33334060048446190194226801395416259765625')}

期望输出:

{'num': 171.33334060048446190194226801395416259765625}

尝试将num转为字符串,但无法去除字典中数值前后的引号,请问如何实现该需求?

解决方案

这里提供几种实用的处理方式:

方法1:手动构造目标格式字符串

直接跳过字典默认的打印逻辑,自己拼接符合要求的输出内容:

from decimal import Decimal

num = Decimal(171.33334060048446)
json_dict = {"num": num}

# 用f-string拼接成期望的格式,注意大括号要转义
output = f"{{'num': {num}}}"
print(output)

运行后就能直接得到不带Decimal()包裹和引号的数值输出。

方法2:提取Decimal的纯数值字符串再拼接

如果已经把num转成了字符串,直接取Decimal对象的原始数值字符串(本身不带引号),再构造输出:

from decimal import Decimal

num = Decimal(171.33334060048446)
num_str = str(num)  # 得到的是不带引号的数值字符串
json_dict = {"num": num_str}

# 手动拼接避免字典默认给字符串加引号
output = f"{{'num': {json_dict['num']}}}"
print(output)

方法3:自定义Decimal子类(一劳永逸)

如果需要频繁输出这种格式,可以继承Decimal重写__repr__方法,让打印时直接输出纯数值:

from decimal import Decimal

class PlainDecimal(Decimal):
    def __repr__(self):
        return str(self)

num = PlainDecimal(171.33334060048446)
json_dict = {"num": num}

print(json_dict)  # 直接输出期望格式:{'num': 171.33334060048446190194226801395416259765625}

内容的提问来源于stack exchange,提问作者ohnodev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 10:27:20