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

使用int(float(x))处理CSV价格数据时丢失小数位该如何解决?

解决方案

你对问题原因的判断完全正确,int(float(fields[4])) 这一步强制将带小数的价格转为整数,会直接截断所有小数部分,最终计算结果自然丢失小数精度。

修改步骤

  • 去掉price字段多余的int强转,直接保留float类型即可
  • 数量字段Qty如果确定是整数可保留int转换,避免非法输入导致计算错误
  • 最终计算结果会自动保留浮点精度,如需固定小数位数可额外做格式化处理

修改后代码

def mapper(self, key, value):
    fields = value.split(",")
    name = fields[6] + " " + fields[7]
    Price = float(fields[4])
    Qty = int(fields[5])    
    avgPrice = Price * Qty
    # 若需要强制保留两位小数,可取消下方注释
    # avgPrice = round(avgPrice, 2)
    yield name, avgPrice

如果要求输出结果严格保留两位小数(比如整数结果需要展示为25.00),可直接返回格式化后的字符串:

yield name, f"{avgPrice:.2f}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:27:01