我正在处理一个二进制文件,并尝试使用write/readinto和与C types-C兼容的数据类型(因为这个文件也使用另一个C程序)来写入/读取这个文件的字节块。
例如,写作:

num = 1.221
my_file_in = open('values.file', "wb")
value = c_float(num)     # writing 1.22099999... this a known problem
my_file_in.write(value)
.....

以及阅读:
num = 1.221
chunk = c_float()
my_file.readinto(chunk)

我想比较num和我从文件中读到的,在chunk.value中是1.22099999。。。在python程序中,把读的数和浮点数作为num变量进行比较的最佳方法是什么?用减法和epsilon或其他方法比较?
math.fabs(chunk.value - num) <= epsilon

我可以把1.221写在文件里,以后读了比较没有问题吗?

最佳答案

用epsilon进行比较对我来说似乎是最好的方法。
如果您认为错误太大,可以从c_float切换到c_double,这是Pythonfloat的等效值,两者都有8个字节。这是相当令人困惑的,但它可能会有所帮助。

关于python - 比较,例如float(1.221)和c_float(1.221).value,使用减法和epsilon还是最佳方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12860358/

10-10 15:06