Erro grotesco devisão com Double

Alguem poderia me explicar ?

        double d1 = 8.85;
        double d2 = 3.0;
        
        java.lang.System.out.println( d1 / d2 );

o resultado está sendo 2.9499999999999997

mas se fizer com float fica correto 2,95

Essa “devisão” :stuck_out_tongue:
está correta sim…o double é mais preciso que o float, mostra mais casas decimais…no float, ele arredonda.

Creio que é isso ai. Se falei merda, me desculpem ai! Abs!

mas se fizermos o cálculo no velho e bom lapis o resultado será 2,95

que precisão é está, sei que o java trabalha com arredondamentos de casas, mas acho que este não é o caso

O double tem uma precisão maior que o float, talvez por isso esteja dando esse resultado. Se voce usar um printf com precisao de duas casa decimais usando double, o resultado deve ser o mesmo. Por exemplo: printf("%.2f" , d1/d2);

Acredito que seja isso.

What Every Computer Scientist Should Know About Floating-Point Arithmetic

http://docs.sun.com/source/806-3568/ncg_goldberg.html

P.S - desculpa o comentário…mas devisão não amiguinho.Tenta assim: Divisão,fica visualmente mais bonito e ortograficamente mais correto.Abraço.

desculpe meu péssimo português, e minha falta de atenção ao digitar o texto