Erro ao subtrair valores usando float [Resolvido]

Oi gente, minha dúvida é bem simples,
tenho o seguinte código

float a = 2.5f; float b = 2.3f; System.out.println(a-b); Porém o resultado que obtenho é o seguinte,

0.20000005Porque eu obtenho este erro de falta de precisão? Como posso corrigir isso?

porque está utilizando float, por essa razão a falta de precisão.

use BigDecimal ao invéz de float para calculos com precisão.

O problema é que eu precisava subtrair esse numero e depois usar o metodo de raiz quadrada

Math.sqrtPorém ele não funciona em BigDecimal, tem como converter o BigDecimal para float ou double novamente?

http://www.opentaps.org/docs/index.php/How_to_Use_Java_BigDecimal:_A_Tutorial

[quote=fabiobh]O problema é que eu precisava subtrair esse numero e depois usar o metodo de raiz quadrada

Math.sqrt

O método Math.sqrt() recebe um double em sua assinatura. Portanto, basta fazer a subtração com o BigDecimal e em seguida, usar o método doubleValue da própria classe BigDecimal para passar na assinatura do sqrt.

Valeu gente, obrigado, consegui solucionar usando o método doubleValue recomendado pelo nel, e o tutorial do bigInteger passado pelo viniciusalvess explica muita coisa que eu não fazia idéia, brigaduuuuuu…

A imprecisão ocorre porque o sistema é binário, veja: http://www.guj.com.br/java/84121-parabola#448928