Formato de flotadores con módulo json estándar.

Estoy usando el estándarmódulo json en Python 2.6 para serializar una lista de flotadores. Sin embargo, estoy obteniendo resultados como este:

>>> import json
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'

Quiero que los flotadores estén formados con solo dos dígitos decimales. La salida debería verse así:

>>> json.dumps([23.67, 23.97, 23.87])
'[23.67, 23.97, 23.87]'

He intentado definir mi propia clase de codificador JSON:

class MyEncoder(json.JSONEncoder):
    def encode(self, obj):
        if isinstance(obj, float):
            return format(obj, '.2f')
        return json.JSONEncoder.encode(self, obj)

Esto funciona para un único objeto flotante:

>>> json.dumps(23.67, cls=MyEncoder)
'23.67'

Pero falla para objetos anidados:

>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'

No quiero tener dependencias externas, así que prefiero seguir con el módulo json estándar.

¿Cómo puedo conseguir esto?

Respuestas a la pregunta(12)

Su respuesta a la pregunta