Duvida sobre Arredondamento

1 resposta
M

Boa noite, sou estudante de engenharia química e recentemente eu desenvolvi um programa para cálculos termodinâmicos, mas estou encontrando um problema nele devido ao programa utilizar muitas casas decimais, com isso a conta q era para dar 52,7 está dando 52,482597…

double cp = 0.35+(0.851*U/(1+U)); double R = P*ve*A*X/(Q*T*60*(1+U)); double Te = ((0.24+0.45*Wo)*To+cp*R*(1+U)*Tgo)/(0.24+0.45*Wo+cp*R*(1+U)); jTextField2.setText(""+Te);

tentando resolver meu problema dei uma pesquisada e descobri a função Math.Round

e tentei modificar o programa para

double cp = Math.round((0.35+(0.851*U/(1+U)))*100000)/100000; double R = Math.round((P*ve*A*X/(Q*T*60*(1+U)))*100000)/100000; double Te = Math.round((((0.24+0.45*Wo)*To+cp*R*(1+U)*Tgo)/(0.24+0.45*Wo+cp*R*(1+U)))*100000)/100000; jTextField2.setText(""+Te);

e agora o programa está me retornando 60!

onde eu estou errando?

1 Resposta

matheusgeres

Amigo,

Você pode utilizar um BigDecimal para isso, segue um exemplo básico.

BigDecimal d = new BigDecimal(45.325645); d = d.setScale(4,BigDecimal.ROUND_CEILING); System.out.println(d);

O ROUND_CEILING verifica qual arredondamento compensa mais, se para cima ou para baixo. Mas você pode definir outras formas, vou deixar também o link da documentação, assim você escolhe conforme sua necessidade. O número 4 inserido no exemplo indica a quantidade de casas decimais de precisão para o arredondamento, se colocado zero, logo não haverá mais casas decimais.

http://docs.oracle.com/javase/6/docs/api/java/math/BigDecimal.html

Criado 12 de abril de 2013
Ultima resposta 13 de abr. de 2013
Respostas 1
Participantes 2