Olá
Estou criando o seguinte código:
[color=blue]float [/color][color=green]V, Vo, a, ti, tf, t, X, Xo;[/color]
[color=green]Vo [/color]= Float.valueOf([color=green]V_inicial[/color].getText());
[color=green]a [/color]= Float.valueOf([color=green]gravidade[/color].getText());
[color=green]Xo [/color]= Float.valueOf([color=green]P_inicial[/color].getText());
[color=green]X [/color]= Float.valueOf([color=green]P_final[/color].getText());
[color=green]V [/color]= ([color=blue]float[/color]) Math.sqrt((Math.pow([color=green]Vo[/color], 2)) + (2 * [color=green]a[/color] * ([color=green]X[/color] - [color=green]Xo[/color])));
[color=blue]if [/color]([color=green]V [/color]> 0) {
[color=green]Resultado.setText[/color]("A velocidade tem o mesmo sentido do eixo, a velocidade final é " +[color=green] V[/color] + " m/s");
}
o resultado ele dá o seguinte: " [color=black]A velocidade tem o mesmo sentido do eixo, a velocidade final é 90.0 /ms"
Alguém sabe me dizer como faço pra esse “90.0” ser exibido “90” tipo, quando o resultado for inteiro ele mostrar “90”, “65”, "10"etc, quando realmente for decimal “9.5”, “2.3” etc, ele mostrar decimal, alguém sabe dizer se é possível fazer isso ?
Poderia ser mais específico ? Porque os exemplos que vi lá não consegui entender algumas coisas, como o computador vai saber o que é 0.9 ou 9.0 ? pra poder usar o decinalformat
Pra começar, evite fazer contas com float.
O Java foi todo estruturado para funcionar melhor com double; raramente você precisa usar float (na API do Java, por exemplo, só vi coisas no Java2D, para ter idéia).
Veja como é muito mais simples trabalhar com double.
Use “%.0f” para mostrar com 0 casas depois da vírgula.
double V, Vo, a, ti, tf, t, X, Xo;
Vo = Double.parseDouble(V_inicial.getText());
a = Double.parseDouble(gravidade.getText());
Xo = Double.parseDouble(P_inicial.getText());
X = Double.parseDouble(P_final.getText());
V = Math.sqrt((Math.pow(Vo, 2)) + (2 * a * (X - Xo)));
if (V > 0) {
Resultado.setText(String.format ("A velocidade tem o mesmo sentido do eixo, a velocidade final é %.0f m/s", V));
}
Tem uma coisa esquisita no seu código. Qual é a razão de você elevar um número ao quadrado e tirar sua raiz quadrada?
Se quiser obter o valor absoluto de um código, use Math.abs(x) em vez de Math.sqrt (Math.pow (x, 2)).
Hum, esqueci que você quer uma formatação condicional, do tipo “90” ou “0.3”.
Para isso é necessário escrever um método separado, já que o Java, como eu já disse, escreve “90.0” em vez de “90”.
Deu certo aqui usando isso:
[color=blue] float[/color] [color=green] V, Vo, a, ti, tf, t, X, Xo[/color];
DecimalFormat [color=green] df[/color] = [color=blue] [/color]new DecimalFormat("");
[color=green] Resultado[/color] .setText(“Movimento acelerado, a velocidade é " + [color=green]df[/color].format([color=green]V[/color] ) + " m/s”);
Mas tipo, com isso ai, se o resultado for, 7.5 por exemplo o resultado sairá mesmo assim ou só vai sair 7 ?
E a questão da matemática está correto porque essa é a fórmula mesmo, eu fiz os testes e deu tudo ceritnho…
Uma forma de fazer exatamente o que você quer é fazer assim:
private static String formataDoJeitoQueVoceQuer (double d) {
String formatado = Double.toString (d);
if (formatado.endsWith (".0"))
return formatado.substring (0, formatado.length() - 2);
else
return formatado;
}
A rigor, eu realmente não gosto disso. Não é algo muito exato…
Deu certo aqui, já…vlw pela ajuda…ajudou muito