就像问题所说的那样。转换为(截断的)字符串表示可能会影响它们的精度。但是将它们存储在其他格式如pickle中会使它们变得不可读(是的,我也想要它)。
如何在文本中存储浮点数而不会丢失精度?
答案 0 :(得分:7)
以二进制或其电源存储。
>>> (3.4).hex()
'0x1.b333333333333p+1'
>>> float.fromhex('0x1.b333333333333p+1')
3.4
答案 1 :(得分:3)
我建议使用内置函数repr()
。来自文档:
repr(object) - >串
返回对象的规范字符串表示形式。 对于大多数对象类型,eval(repr(object))== object。
答案 2 :(得分:-1)
pickle.dumps
会这样做,但我也相信float(str(floatval)) == floatval
- 至少在同一系统上......