gpt4 book ai didi

python - 比较,例如 float(1.221) 和 c_float(1.221).value,使用减法和 epsilon 还是最佳方式?

转载 作者:太空宇宙 更新时间:2023-11-04 07:32:05 25 4
gpt4 key购买 nike

我正在处理一个二进制文件,并尝试使用 write/readinto 和 ctypes - C 兼容数据类型(因为该文件也使用另一个 C 程序)向/从该文件中写入/读取字节 block 。例如,写:

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... 解决读取的数字和 float 比较值问题的最佳方法是 num python程序中的变量?比较使用减法和 epsilon 或其他方法?

math.fabs(chunk.value - num) <= epsilon

也许我可以在文件中写入 1.221,并且将来读取后比较没有问题?

最佳答案

使用 epsilon 进行比较对我来说似乎是最好的方法。

如果您认为错误太大,您可以从 c_float 切换到 c_double,这是 C wquivalent for a Python float,两者都有 8 个字节。这相当令人困惑,但它仍然可能有所帮助。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com