使用 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)。
我有一个正在使用的 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)。