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

openerp/fields.py
invf._update(record[self.name], record)
                record._set_dirty(self.name)
            
            if self.relational:
                spec += self.modified_draft(record)
            env.invalidate(spec)
        else:
            
            write_value = self.convert_to_write(self.convert_to_record(value, record), record)
            record.write({self.name: write_value})
            
            if not (self.relational and not all(value)):
                record._cache[self] = value
    
    #
    
    #
    def _compute_value(self, records):
        """ Invoke the compute method on ``records``. """
        
        fields = records._field_computed[self]
        for field in fields:
            for record in records:
                record._cache[field] = field.convert_to_cache(False, record, validate=False)
        with records.env.protecting(fields, records):
            if isinstance(self.compute, basestring):
                getattr(records, self.compute)()
            else:
                self.compute(records)
    def compute_value(self, records):