Me suena que si necesitas precision en los calculos, no sirve la aritmetica con numeros de coma flotante (float, double...).
Necesitas emplear BigDecimal. Mas incomodos de manejar, pero que te garantizan la precision.
http://docs.oracle.com/javase/1.5.0/...igDecimal.html