python – 从C创建的二进制文件中读取double的最佳方法是什么?

前端之家收集整理的这篇文章主要介绍了python – 从C创建的二进制文件中读取double的最佳方法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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)),所以我想如果这个值是不正确的,它发生在写作方面,而不是阅读.

猜你在找的Python相关文章