如何将浮点数存储为文本而不会丢失精度?

时间:2012-06-20 06:13:13

标签: python floating-point

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

如何在文本中存储浮点数而不会丢失精度?

3 个答案:

答案 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 - 至少在同一系统上......