私はnumpy.float32
オブジェクトをJSONとしてエンコードしたいと思っています。問題は、ネイティブのPython float
に変換すると、値の精度が失われることです。float32からfloatに変換するときの精度を保持する方法は?
例:
In [1]: import numpy as np
In [4]: np.float32(295.96).item()
Out[4]: 295.9599914550781
Iが最初に浮いているように、次に、文字列に変換する場合は、精度が保持されます。
In [3]: float(str(np.float32(295.96)))
Out[3]: 295.96
文字列を最初に通過することなく精度を保持する方法はありますか?
str(np.float32(295.96))
は精度が保持されますが、np.float32(295.96).item()
(またはfloat(np.float32(295.96))
またはnp.asscalar(np.float32(295.96))
)の精度を保持しているように見えるのはなぜですか。
注:精度は常に.01
と仮定できません。私はデータの本来の精度を保持する必要があります。
float32-> float変換で精度を失うことはありません。 float32を作成すると、ほとんどの精度低下が発生します。 float32-> float変換は、その精度損失を可視化するだけです。 – user2357112
'float'は' float64'ですので、できません – Eric