Excel浮点解译

2024-03-28 14:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个Excel文件:

enter image description here

当我试图把它读作数据帧,然后把它转换成dict。。。你知道吗

df = pd.read_excel(r"C:\Users\crd\Downloads\Classeur1.xlsx", sheet_name = "Feuil1", encoding="Latin-1")

print(df)

。。。我有这个输出:

  Label    Value1    Value2
0     C  -0.50000   1.80000
1     A  92.92768  92.92768

但是当我想把它转换成dict时,我有这样一个输出:

[
    {'Label': 'C', 'Value1': -0.5, 'Value2': 1.7999999999999998}, 
    {'Label': 'A', 'Value1': 92.92768, 'Value2': 92.92768}
]

为什么1.8在数据帧转换为dict后变为1.79999999999,而不是在创建时?


Tags: 文件数据dfreaddownloadsexceluserslabel
1条回答
网友
1楼 · 发布于 2024-03-28 14:20:45

在python(和任何编程语言)中,实数是用计算机中离散的内存位数来表示的。这意味着并非所有的实数都能精确地表示超过给定的精度。Python对这在the documentation中是如何工作的进行了详尽的解释。你知道吗

有一些选项可以精确地表示一组具有固定精度的十进制数。例如,在从Excel中读取浮点数之后,可以使用the built in ^{} class来表示它们。这可以为您提供数据的精确表示。你知道吗

如果你搜索“浮点表示法”,你会发现很多有趣的问题来说明它是如何工作的。例如,this question的公认答案解释了如何在Python中查看和解释浮点的精确二进制表示。你知道吗

关于这个问题的最后一个想法是,Excel非常擅长在电子表格中显示一个不同于它存储在计算机内存中的底层表示形式的值。有各种各样的选项来更改显示的内容。因此,我经常喜欢将Excel数据写入.csv或其他文本文件格式,然后将文本文件读入Python。与Python中的表示相比,文本文件中的值将是一个更好的参考点。你知道吗

相关问题 更多 >