J'ai un Decimal('3.9')
en tant que partie d'un objet, et je souhaite l'encoder en une chaîne JSON qui devrait ressembler à ceci {'x': 3.9}
. Je ne me soucie pas de la précision du côté client, donc une valeur flottante convient parfaitement.
Existe-t-il un bon moyen de sérialiser ceci ? Le décodeur JSOND n'accepte pas les objets décimaux, et la conversion préalable en flottant donne les résultats suivants {'x': 3.8999999999999999}
ce qui est faux, et sera un grand gaspillage de bande passante.
3 votes
Bogue lié à Python : L'encodeur json ne peut pas gérer les décimales
0 votes
3.8999999999999999 n'est pas plus faux que 3.4. 0,2 n'a pas de représentation flottante exacte.
9 votes
@Jasen 3.8999999999999 est environ 12,8% plus faux que 3.4. La norme JSON ne concerne que la sérialisation et la notation, pas la mise en œuvre. L'utilisation de IEEE754 ne fait pas partie de la spécification JSON brute, c'est seulement la façon la plus courante de l'implémenter. Une mise en œuvre qui n'utilise que l'arithmétique décimale précise est tout à fait (en fait, même plus strictement) conforme.
3 votes
moins Faux. Ironique.