json.dumps是否保证不会丢失浮点精度?

时间:2012-06-20 10:21:52

标签: python

我说的是JSON转换,如:

>>> a = {'asas': 1/7.0}
>>> b = json.dumps(a)
>>> c = json.loads(b)
>>> c
{u'asas': 0.14285714285714285}
>>> c['asas'] == 1.0/7
True

JSON编码是否保证不会舍入数字?

在我的How to store a floating point number as text without losing precision?中,Mark Dickinson说repr不会导致精确度下降。 json.dumps使用repr吗?

1 个答案:

答案 0 :(得分:6)

json文档中没有提到repr,但它是当前浮点到字符串强制的实现:

FLOAT_REPR = repr

Lib/json/encoder.py, line 31

如果您需要严格保证,可以建立自己的JSONEncoder