C程序将连续的双精度值吐出到二进制文件中.我希望将它们读成Python.我尝试使用struct.unpack(‘d’,f.read(8))
编辑:
我在C中使用以下内容来编写随机双数
r = drand48();
fwrite((void*)&r,sizeof(double),1,data);
错误现在已修复,但我无法读取第一个值.对于所有0.000 ..数字,它将其读作3.90798504668055,但其余的都很好.
最佳答案
我认为你实际上是在正确阅读这个数字,但却被
显示屏搞糊涂了.当我从你提供的
文件中读取数字时,我得到“3.907985046680551e-14” – 这几乎不是零(扩展形式为0.000000000000039).我怀疑你的C
代码只是以比python更低的精度打印它.
[编辑]我刚尝试用C读取文件,得到相同的结果(虽然精度略低:3.90799e-14)(使用printf(“%g”,val)),所以我想如果这个值是不正确的,它发生在写作方面,而不是阅读.