【发布时间】:2018-12-04 00:58:09
【问题描述】:
我想将一个 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
3.1415926535800001
这是不可取的。我希望数据按原样存储,以便另一个程序可以准确地检索它们。有什么想法吗?
【问题讨论】:
-
(Python) 浮点数有一些限制:docs.python.org/3/tutorial/floatingpoint.html
-
您可以将它们保存为二进制文件,但是,它们不一定可以传输到具有其他架构的其他机器上。
-
@JoseFelipe - 分数只适用于存储有理数。非理性的人呢?例如。您建议存储
PI的分数是多少? -
@ryyker 回复:What about irrationals?:所有有限的
double都是有理数,因此无理数不适用于“保存和读取双精度而不损失精度”。即使是常见的M_PI,也就是 π 的近似值,也是有理数
标签: python c floating-point