2012-06-20 4 views
6

Je parle d'une conversion JSON comme:Est-ce que json.dumps est garanti pour ne pas perdre de précision en virgule flottante?

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

est l'encodage JSON garanti ne pas roundoff le nombre?

Dans mon How to store a floating point number as text without losing precision?, Mark Dickinson dit que repr ne provoque pas de perte de précision. Est-ce que json.dumps utilise le repr?

Répondre

6

Il n'y a aucune mention de repr partout dans les json docs, mais il est la mise en œuvre actuelle de la contrainte float à cordes:

FLOAT_REPR = repr 

(Lib/json/encoder.py, line 31)

Vous pouvez construire votre propre JSONEncoder si vous voulez une garantie stricte.

Questions connexes