Não estou conseguindo calcular esse desconto?

12 respostas Resolvido
java
T
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

12 Respostas

icarometal

e qual o erro que aparece?

L

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?

T

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

L

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.

L
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)));

T

ok muito obrigado pela ajuda vou ver aqui vlw!

Dragoon

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

T

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

Dragoon

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

T

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

Dragoon
Solucao aceita

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.

T

Deu certo muito obrigado Dragoon vlw até!

Criado 27 de março de 2017
Ultima resposta 27 de mar. de 2017
Respostas 12
Participantes 5