Operações com tipo double

Tenho uma variavel do tipo double chamada ‘rate’, com o valor 0.05. Quando realizo a soma " rate += 0.01 ", ao inves de me retornar o valor correto que seria 0.06 o programa me retorna a dizima 0.060000000000000005. O mesmo a contece quando tenho o valor 0.09 e somo à mais 0.01, ao inves de receber o valor correto que é 0.1 recebo a dizima 0.09999999999999999. Alguém sabe me informar porque isso acontece e como faço para obter o valor correto que é 0.06 e 0.1?

OBS. A operação tem que ser com variaveis do tipo double :roll:

Eu tb gostaria de saber.

Utilize a classe BigDecimal para estas operações precisas.

Ai eu já não sei te ajudar :roll:.

O próprio 0.05 já é uma dízima em binário.

Talvez o único jeito de resolver isso seja truncando o número a partir da casa que você achar desprezível.

Ou o BigDecimal (nem sei como usar).

pra ter a precisao que voce quer, so vai com BigDecimal mesmo. Nao é dificil de usar, é so da uma olhada na documentaçao!