浮動小数点数0.01の出力で 'struct pack and unpack'を使用すると0.009999999776482582になります。 私のプロジェクトではfloatの値を設定する必要があります。 バイナリファイルに保存する必要があり、このデータが後で解析される必要があり、設定された正確な値が必要です。浮動小数点数0.01の出力でstruct packとunpackを使用すると、0.009999999776482582になります。
正確な値0.01を格納して同じ値を取得できる方法があれば、助けてもらえますか?
投稿の一部に基づいて、私はすでにfloatの代わりにdoubleを使ってみましたが、動作しますが、doubleを使用することによる問題はファイルサイズの増加です。私は浮動小数点数のパラメータをたくさん持ち、0から5までの値を取ることができます。 したがって、他の提案もありがたいです。ここで
は、サンプルコードには浮動小数点数0.01
はありません
import struct
a = 0.01
b = struct.pack('<f', a)
c = struct.unpack('<f', b)
print c
(0.009999999776482582,)
正確な値「0.01」は、浮く。おそらく '0.01'を正確に表現したい場合は、' decimal'モジュールを見ることができます。 –
どのような種類の値を保存していますか?数字は0から5まで、小数点は何桁までと言いますか? – vz0
"いくつかの投稿に基づいて、私はすでにfloatの代わりにdoubleを使ってみましたが、それはうまくいきますが、二重使用の問題は私のファイルサイズの増加です" - すべての精度を保持するためにストレージ価格を支払うつもりがなければあなたの出力の精度の低下について不平を言うべきではありません。 – user2357112