Python中Amazon Simple Product API的price_and_currency返回Decimal如何修正?
解决Amazon Simple Product API返回Decimal类型价格的问题
嘿,我之前也遇到过这个小坑!其实这是因为模块内部做了优化——用Decimal类型存储价格(毕竟处理货币用Decimal比字符串/浮点数靠谱太多,能避免浮点精度丢失的麻烦),但官方文档没及时同步更新导致的差异。
要得到文档里显示的('149.95', 'USD')格式,你可以试试这几种方法:
直接转换Decimal为字符串:
返回的元组第一个元素是Decimal对象,直接用str()把它转成字符串就行:price_tuple = product.price_and_currency formatted_price = (str(price_tuple[0]), price_tuple[1]) # 输出就是 ('149.95', 'USD')封装成工具函数(方便复用):
如果你的代码里经常需要处理这个转换,写个小函数会更省心:def format_price_currency(price_tuple): return (str(price_tuple[0]), price_tuple[1]) # 使用示例 formatted_price = format_price_currency(product.price_and_currency)额外小提醒:
其实如果你的代码需要对价格做计算,保留Decimal类型反而更好——它能精准处理货币的加减乘除,不会出现类似0.1 + 0.2 = 0.30000000000000004的诡异问题。只有当你需要和文档格式完全一致,或者要把价格展示给用户/存入字符串格式的存储时,才需要转成字符串。
内容的提问来源于stack exchange,提问作者Rimo
相关产品推荐
相关产品推荐

