使用 int(float(x) 时如何克服小数位问题?

How can i overcome a decimal place issue when using int(float(x)?

我有一个正在使用的 csv 文件,它由几个字段组成。 我正在添加名称字段 - 以获取全名,然后提取价格和数量字段 - 这是 CSV 文件中的字符串。

def mapper(self, key, value):
            fields = value.split(",")
            name = fields[6] + " " + fields[7]
            Price = int(float(fields[4]))
            Qty = int(fields[5])    
            avgPrice = (Price*Qty)
            yield name,avgPrice

我的输出给了我

Becca Nelson 25.0

但是我遗漏了小数位,我认为这是因为我不得不使用 int(float(x)

我希望输出是 Becca Nelson 25.55

我该如何解决这个问题?

您可以使用标准 python 模块 decimal 来准确处理实际值。

from decimal import Decimal


def mapper(self, value):
    fields = value.split(",")
    name = fields[6] + " " + fields[7]
    price = Decimal(fields[4])  # here
    qty = int(fields[5])    
    avg_price = price * qty
    return name, avg_price

此外,我建议您使用 csv reader and pandas instead of string operations (example)。