Impacted versions:10

Steps to reproduce:
Following the code in https://www.odoo.com/documentation/10.0/api_integration.html both in a fresh install and against 'https://demo.odoo.com/start' trows a type error

Current behavior:
Now I get an error when executing:

```
ids = models.execute_kw(db, uid, password,  'res.partner', 'search',
    [[['is_company', '=', True], ['customer', '=', True]]],
    {'limit': 1})
[record] = models.execute_kw(db, uid, password,
    'res.partner', 'read', [ids])
# count the number of fields fetched by default
len(record)
```

In particular it seems to be a type error (cannot marshal class odoo.tools.float_utils.float_precision)

Expected behavior:
I would expect it to behave as in the documentation

""" Minimal support for existing sparse and serialized fields. """
    type = 'serialized'
    def convert_to_cache(self, value, record, validate=True):
        return value or {}
class Id(Field):
    """ Special case for field 'id'. """
    type = 'integer'
    _slots = {
        'string': 'ID',
        'store': True,
        'readonly': True,
    }
    def to_column(self):
        self.column = fields.integer(self.string)
        return self.column
    def __get__(self, record, owner):
        if record is None:
            return self         
        if not record:
            return False
        return record.ensure_one()._ids[0]
    def __set__(self, record, value):
        raise TypeError("field 'id' cannot be assigned")
from openerp import SUPERUSER_ID
from .exceptions import AccessError, MissingError
from .models import check_pg_name, BaseModel, IdType
from .osv import fields