Формат плавает с помощью стандартного модуля JSON

Я использую стандартмодуль JSON в Python 2.6 для сериализации списка поплавков. Тем не менее, я получаю результаты, как это:

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

Я хочу, чтобы числа с плавающей запятой форматировались только с двумя десятичными цифрами. Вывод должен выглядеть так:

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

Я попытался определить свой собственный класс JSON Encoder:

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

Это работает для единственного объекта с плавающей точкой:

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

Но терпит неудачу для вложенных объектов:

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

Я не хочу иметь внешние зависимости, поэтому я предпочитаю придерживаться стандартного модуля json.

Как мне этого добиться?