有些接口返回金额、汇率这种小数,直接 json.loads() 会进到 float。展示还行,真要做累加就容易有点飘。
环境:Python 3.10+,只用标准库。
import json
from decimal import Decimal
text = '{"price": 0.1, "tax": 0.2}'
plain = json.loads(text)
exact = json.loads(text, parse_float=Decimal)
print(plain["price"] + plain["tax"])
print(exact["price"] + exact["tax"])
print(type(exact["price"]))
float 那行会看到一点点偏差,Decimal 就稳多了。要是后面还要写回 JSON,记得自己处理一下序列化。