在不损失精度的情况下,存储和读取加倍

2024-04-23 10:37:35 发布

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

我想将一个double序列保存到一个.txt文件中,然后用C读取它们。如何在不损失精度的情况下实现这一点?我不知道要保存多少数字?如果没有保存足够的数字,我怀疑我可能得不到我保存的确切数字。你知道吗

下面是我尝试过的

doubles=[3.14159, 3.14159265358]
filename="tmp.txt"
with open(filename,'w') as f:
    for x  in doubles:
        f.write("%.16f\n" %x)

我得到了两个(我猜)不精确的数据表示,doubles。 3.1415899999999999 1415926535800001美元

这是不可取的。我希望数据按原样存储,以便另一个程序可以准确地检索它们。你知道吗?你知道吗


Tags: 文件txtforaswith情况精度序列
1条回答
网友
1楼 · 发布于 2024-04-23 10:37:35

从C11开始,使用DBL_DECIMAL_DIG,对于这个用法,确切地定义为:参见https://en.cppreference.com/w/c/types/limits。它告诉您所需精度的小数位数,以便加载保存的double,然后是保存,然后重新加载意味着两个加载步骤将始终返回相同的double。你知道吗

DBL_DECIMAL_DIG通常是17。你知道吗

相关问题 更多 >