Soma float com problema

Olah pessoal… estou com um problema ao somar numeros float.
eu fiz uma calculadora e ao somar 0.1 com 0.1 por varias vezes ele perde a precisao.
e assim com todos os numeros decimais. Obs. os numeros inteiros naum tem esse problema.

Ex:
0,1+0,1=0,2
0,2+,01=0,3
0,3+,01=0,4
0,4+,01=0,5
0,5+,01=0,6
0,6+,01=0,70000005
0,70000005+,01=0,80000001
Alguem sabe por qual motivo isso ocorre??

Vlw desde jah galera!

tenta usando a classe java.math.BigDecimal

abraços!

Usar como?? ql funcao?

Ai abaixo tah a soma feita no console.

0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001
1.0000001
1.1000001
1.2000002
1.3000002
1.4000002
1.5000002
1.6000003

Float eh assim mesmo…usa o metodo add() de BigDecimal.

[quote=mynameisflaw]tenta usando a classe java.math.BigDecimal

abraços![/quote]

usar como essa classe???

ai abaixo tah o exemplo q eu fiz no console…

0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001
1.0000001
1.1000001
1.2000002
1.3000002
1.4000002
1.5000002
1.6000003

ee vlw

mal o post duplo

como eu disse antes,

usa o metodo add() de BigDecimal…veja a API da classe.

Dá uma lida nesses tópicos:
http://www.guj.com.br/posts/list/68086.java#357907
http://www.guj.com.br/posts/list/84121.java#448928

Você vai entender melhor a questão do float. E veja se só converter para double já não te ajuda.

[quote=agostinho]como eu disse antes,

usa o metodo add() de BigDecimal…veja a API da classe.[/quote]

noossa cara…
naum entend nada como utilizar essa funcao…
seria possivel vc me mandar um exemplo ou um link??

vlw

[quote=ViniGodoy]Dá uma lida nesses tópicos:
http://www.guj.com.br/posts/list/68086.java#357907
http://www.guj.com.br/posts/list/84121.java#448928

Você vai entender melhor a questão do float. E veja se só converter para double já não te ajuda.[/quote]

vlw cara…
ainda tah dando uns problemas mas ilumino bastante esse link…

abraco

do mesmo jeito q vc usaria um metodo de qq outra classe…

BigDecimal big1 = new BigDecimal(5404.34);
BigDecimal big2 = new BigDecimal(34.5);
        
        System.out.println( big1.add(big2) );