Não estou conseguindo calcular esse desconto?

private void botao2ActionPerformed(java.awt.event.ActionEvent evt) {
        float n = Float.parseFloat(nominal2.getText());
        float t = Float.parseFloat(taxa.getText());
        float p = Float.parseFloat(tempo.getText());
        float des = (float) Math.pow(n * (1 - (1 - t)), p);
        resultado2.setText(Float.toString(des));

Isso é jFrame e essa é a fórmula des = n.(1-(1-t)^p), onde:

des = desconto comercial composto
n = nominal
t = taxa
p = período ou tempo

e qual o erro que aparece?

1 curtida

Isso nunca é um JFrame, isso é, no máximo, um método criado po um duplo clique num botão chamado botao2, no netbeans e algum código criado depois disso.

Qual o enunciado?
Qual o problema?

não dar erro apenas o calculo dar errado era pra dar 39.8 e dar 399.99999
eu coloquei o nominal 2000 a taxa 0.01 e o periodo 2

Isso

É diferente disso

Por quê?
Lembra das prioridades na execução de cálculos matemáticos?
A soma e a subtração são, sempre, os últimos a serem efetuados (salvo se estão entre parênteses.
O que eu entendo da fórmula que passou:
des = n * (1 - (1 - t) ^ p)
des é igual a n vezes a 1 - a potência de 1 - t.
Logo, você precisa calcular 1 - t e elevar o resultado à potência indicada. Em seguida, deve subtrair esse resultado de 1 e, então, multiplicar por n.
Provavelmente você executou algo fora da ordem e o resultado foi 10 vezes maior que o esperado.

float des = (float) Math.pow((1 - (1 - t)), p);
des = des*n;
Acho que fica assim a formula correta

edição:
Bom na verdade a formula fica assim
float des = (float) (n * (1-Math.pow(1-t, p)));

ok muito obrigado pela ajuda vou ver aqui vlw!

Como está sendo digitado isso nas caixas de texto? por exemplo:
Com virgula: 3,25 ou com ponto 3.25?

Eu sei que em java não se usa vírgula vlw Dragoon

Sim, então qual é a conta matemática para resolver o seu problema se quer ajuda ainda ou posso fechar o post?

Quero resolver isso em java
Nominal = 2000
Taxa = 0.01
Tempo ou Período = 2
Quero o desconto comercial composto

fórmula D=N*(1-(1-i)^T)
obs i = Taxa

o resultado tem que dar 39.8

Método para solução:

public static float descontoComposto(float nominal, float taxa, int tempo)
{
   return (float)(nominal * (1 - (Math.pow((1-taxa), tempo))));        
}

o valor desse método dá: 39.79996, acredito que você arrendondou nas explicações.

Exemplo IDEONE

###Um dica podia utilizar decimal, é mais preciso.

Deu certo muito obrigado Dragoon vlw até!

1 curtida