私はバイナリファイルで作業しており、書き込み/読み取りとctypesを使用してこのファイルのバイトチャンクに書き込み/読み取りを試みています-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 であることを知っています... num
Python プログラムで変数として読み取った数値と浮動小数点数値の比較値の問題を解決する最良の方法は何ですか? 減算とイプシロンまたは別の方法を使用した比較?
math.fabs(chunk.value - num) <= epsilon
ファイルに 1.221 を書き込んでも、将来的には読み取り後の比較に問題がないのでしょうか?