7

就像问题说的那样。转换为/从(截断的)字符串表示形式可能会影响其精度。但是将它们存储为其他格式(例如 pickle)会使它们不可读(是的,我也想要这个)。

如何在不丢失精度的情况下将浮点数存储在文本中?

4

3 回答 3

8

将其存储为二进制或其幂。

>>> (3.4).hex()
'0x1.b333333333333p+1'

>>> float.fromhex('0x1.b333333333333p+1')
3.4
于 2012-06-20T06:22:34.577 回答
3

我建议使用内置函数repr()。从文档中:

代表(对象)-> 字符串

返回对象的规范字符串表示。对于大多数对象类型,eval(repr(object)) == object。

于 2012-06-20T06:28:23.427 回答
-1

pickle.dumps会做到的,但我float(str(floatval)) == floatval也相信——至少在同一个系统上......

于 2012-06-20T06:20:15.113 回答