Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Ajuda, meu código não funciona :-(

Tentei criar uma calculadora de percentual de retorno real de investimentos, mas não funcionou... já revisei e comparei com outros códigos aqui mas não encontro o erro...

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

5 respostas

O erro está na formula dos juros reais!

Lembrando que na formula os valores das taxas precisam estar no formato decimal (20% tem que colocar 0,20), então quando pegar o valor do usuário pelo prompt eu já fiz a divisão por 100.

//         Formula juros reais  
//            (1 + nominal) = (1 + real) × (1 + inflação).
//        
//        Isolando o real
//            (1 + real) = ( (1 + nominal) / (1 + inflação) ) 
//        
//        Aqui esta o erro vc esqueceu do numero 1 que soma com o real.
//            1 + real = (1+nominal) / (1+inflaçao)
//        
//        É só passar o 1 subtraindo.
//            juros reais = ( (1+nominal) / (1+inflaçao) ) - 1
//
//        Então a formula no script ficaria assim:
//            return ( (taxa Nominal) / (inflação) )-1

E só mais uma coisa, não se esqueça do comando meta charset no inicio do programa.

<meta charset="UTF-8">  

<script>

    function pulaLinha() {
        document.write("<br><br>");
    }

    function mostrar(texto){
        document.write(texto);
        pulaLinha();
    }

    function taxaReal (taxaJurosNominal, percentualInflação){
        return ((1+taxaJurosNominal)/(1+percentualInflação))-1;
    }

    var nominal=(parseFloat(prompt("Informe o juros nominal")))/100;
    var inflacao=(parseFloat(prompt("Informe a inflação prevista no periodo")))/100;
    var calculo=taxaReal(nominal, inflacao);

    mostrar("O percentual de retorno real do seu investimento é "+Math.round(calculo*100*100)/100+"%")

</script>

[https://clubedospoupadores.com/calcular-taxa-de-juro-real](Link de referência) Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Guilherme, agradeço demais. Sou totalmente iniciante, mesmo! Sem querer abusar mas já abusando, gostaria de entender por que é necessário transformar a fórmula original 1+taxaJurosNominal / 1+ percentual de inflação para se chegar a essa ((1+taxaJurosNominal) / (1+percentualInflação))-1. E por que é necessário repetir a multiplicação por 100 aqui (calculo100100)/100+"%"). Entendi já pq é necessário dividir por 100, mas não entendi as multiplicações. Muito obrigada!

solução!

Oi Soraia, tudo bem? Então, a formula para se descobrir taxas reais não é a que vc tinha colocado. Esse aqui seria a formula correta:

( 1+nominal) / (1+inflação);

Então vc pega esse resultado e subtrai "1", para chegar a taxa real, no fim fica no formato que coloquei:

o resultado de (  (1+nominal)/(1+inflação) ) menos 1

Então quando eu coloco essa formula direto na variável "calculo" acaba saindo um valor bem quebrado! Por ex, se eu colocar nominal = 20 e inflação =15 era pra dar 4,35% porem da isso aqui:

0.04347826086956519  

Lembra que dividimos por 100 para transformar a porcentagem em decimal pra por na formula? Agora precisamos fazer o valor decimal voltar a ser uma porcentagem, então multiplicamos por 100. Essa já seria a porcentagem correta:

calculo*100 =  4.347826086956519  

A partir daqui os cálculos são só para fazer o arredondamento correto para que ao invés de aparecer " 4.3478..." apareça "4.35%"

Arredondamento:
  • Se colocar o Math.round para arredondar o valor 4.3478 não vai chegar no valor que queremos, pois ele vai arredondar para o numero inteiro, resultando em " 4% ".
  • Então multipliquei mais uma vez por 100:
calculo*100 = 4.3478
calculo*100*100= 434.78
  • Agora sim podemos arredondar com o math round:
          Math.round(calculo*100*100)
    //     No nosso ex o 434.78 seria  arredondado para = 435
    //     Então depois de chegar nos valores corretos so precisei dividir por 100 para retornar ao valor 4.35
          Math.round(calculo*100*100)/100

muitíssimo obrigada, Guilherme!!! :-)

Guilherme beleza, como vc coloca o código sem "ativar" ele aqui?