Currently the Currency and Float attribute types only differ in the representation in the web client, a Currency is automatically rounded to 2 digits. This means Currency is also represented with a Float / Double in Java and the database.
If you do a lot of calculations Floats will become inaccurate, therefore it is adviced to use Long/Integer or, in your Java code BigDecimal. We will investigate if we can by default use BigDecimal for Currency attribute types. To track progress on this subject please file a ticket.
Edit: see also comment of Arjen "With regard to what the web client shows for float values: before sending float values to the client the runtime rounds the values using BigDecimal.round with a precision of 10. So if you need more precision than this follow Johan's advice."