我正在处理一个二进制文件,并尝试使用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/