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