thiagofesta:
juliofsn:
Use double para aumentar a precisão.
Se você quer precisão máxima, então use BigDecimal
Com double ele de fato aumenta a precisão, mas não aparece o maldito do 7 la do fim.
Está estranho isso!
Isso não é nada estranho. Vc que não sabe trabalhar com numeros.
Primeiro 56/81 é 0,(691358024)
É uma dizima periodica de periodo 691358024.
Mas mesmo que fosse o numero que diz,o numero seria 0,(6) dizima periodica de periodo 6
voc não pode esperar dividir e depois multipliar e dar o mesmo. Nem com bigdecimal isso funciona.
O algoritmo tem que parar em algum ponto , se a dizima é infinita isso causa um arredondamento na ultima casa…
O que vc precisa é o usar o padrão Ratio, para apenas fazer o calculo real no final
com float, double, bigdecimal vc faz
a = (1/3);
b = a * 3;
// b não é 1, mas deveria ser.
por outro lado, precisão é sempre relativa. não existe nada abssoluto. qual é a sua margem de erro ? (não sabe qual é? então seus calculos nunca serão precisos )