Use fields.Monetary() instead of fields.Float()
Use odoo's compare and round methods for floats
Add check_company=True where relevant
Stop using "Account" decimal precision... it doesn't exist any more!
Replace compute() by _convert() for currency conversion