C程序将连续的双精度值吐出到二进制文件中.我希望将它们读成Python.我尝试使用struct.unpack(‘d’,f.read(8))
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)),所以我想如果这个值是不正确的,它发生在写作方面,而不是阅读.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。