I notice some issues with the Java float precision
Float.parseFloat(\"0.0065\") - 0.001 // 0.0055000000134110451 new Float(\"0.027\") - 0.001
See What Every Computer Scientist Should Know About Floating-Point Arithmetic. Your results look correct to me.
If you don't like how floating-point numbers work, try something like BigDecimal instead.