【发布时间】:2018-01-23 10:00:23
【问题描述】:
我了解在 Python 中读取 C 双精度值存在问题。在我的程序中,我正在读取二进制文件并将数值转换为各种大小的整数而没有问题。我使用下面的代码来读取双精度值。
peakDescriptor["area"] = struct.unpack("d",file.read(8))
价值观应该是什么和我得到什么之间存在巨大差异。下面的第一个表是我得到的:
甲烷 3.6368230562528605e-307
乙烷 -8.243249632731949e+306
丙烷 1.839329701286865e-60
2-甲基丙烷 -2.55127317345224e-306
丁烷 3.737451552798833e+59
...
此表显示了值应该是什么:
甲烷 97.25
乙烷 426.50
丙烷 2755.60
2-甲基丙烷 3390.25
丁烷 10906.60
...
如何正确读取这些数字?
我的代码可以是found here
如果您在访问文件时遇到问题,请告诉我!
附:我已尝试根据结构文档更改格式化字符串以包含“>”符号 - 这仍然会导致意外值以及许多 NaN!
【问题讨论】:
-
Can't you provide a toy data set and your code,所以人们可以重现和识别您的问题?恕我直言,目前没有足够的信息来解决这个问题。
-
我刚刚添加了源代码文件和数据文件的链接。谢谢。
-
@HillInHarwich:如果您直接在问题中发布相关字节序列会更好。我可以看到 DropBox 文件,但它们很大,我不知道您要解释其中的哪一部分。
-
“我了解到在 Python 中读取 C 双精度值存在问题。” 使用 C doubles 作为它的浮点数。我从未遇到过在 Python 中使用 C 双精度数据的任何问题。
-
我读到的问题只是与读取的小数位数比 c/c++ 程序记录的多。一个非常小的问题。
标签: python python-3.x struct binary floating-point