在Python中添加浮点数后,如何获得精确的结果?

在Python中添加浮点数后,如何获得精确的结果?,python,Python,给定一个pickle文件-log.dat,其中包含字符串列表。我编写了一个pythonic函数来读取文件并查找表单的一行 Xerror: 0.xxxx 每当遇到这样的行时,我必须提取浮点值,并计算这些错误值的总和。当我到达EOF时,我需要打印此类错误行的总数和错误值的平均值 log.dat Pythonic程序: 在从文件中提取并添加这些内容后,我没有得到确切的需求 0.2395 + 0.2785 + 0.2567 + 0.2245 + 0.2000 + 0.2563 如何实现这一点?您可

给定一个pickle文件-log.dat,其中包含字符串列表。我编写了一个pythonic函数来读取文件并查找表单的一行

Xerror: 0.xxxx
每当遇到这样的行时,我必须提取浮点值,并计算这些错误值的总和。当我到达EOF时,我需要打印此类错误行的总数和错误值的平均值

log.dat

Pythonic程序:

在从文件中提取并添加这些内容后,我没有得到确切的需求

0.2395 + 0.2785 + 0.2567 +  0.2245 + 0.2000 + 0.2563

如何实现这一点?

您可以使用
十进制
模块。不是将数字转换为浮点数,而是

import decimal
... 
    total = decimal.Decimal(0)
    ...
        num = decimal.Decimal(result)

您可以使用
decimal
模块。不是将数字转换为浮点数,而是

import decimal
... 
    total = decimal.Decimal(0)
    ...
        num = decimal.Decimal(result)

将%f格式更改为%.4f。这将输出4位十进制数字的答案,这是您的所有数据集所保证的。

将%f格式更改为%.4f。这将以4位十进制数字输出答案,这是您的所有数据集所保证的。

确切地说,“我没有得到我的要求的确切数字”是什么意思?浮点数不可避免地是一种近似值;你不能用有限的位数来表示无限多的实数。查看
decimal
模块:
awk-F:“$1==”Xerror“{count++;sum+=$2}END{print count,sum/count}”mylogfile.txt
…我没有得到我的要求的确切含义是什么?浮点数不可避免地是一种近似值;你不能用有限的位数来表示无限多的实数。请查看
decimal
模块:
awk-F:“$1==”Xerror“{count++;sum+=$2}END{print count,sum/count}”mylogfile.txt
。。。
import decimal
... 
    total = decimal.Decimal(0)
    ...
        num = decimal.Decimal(result)