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

1+0.08=10.08?

Alguém sabe dizer por que isso está acontecendo o que fazer para consertar?

Os dados que inseri foram 200.000, 20 anos e 0,08

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

const calc = ()=> {

    const valorFinanciado = document.querySelector("#valor-financiado").value;
    const prazoEmAnos = document.querySelector("#prazo-anos").value;
    const taxaJuros = document.querySelector("#taxa-juros").value;

    const prazoMeses = prazoEmAnos * 12;
    const jurosMesal = (1+taxaJuros);

    ;
    console.log(taxaJuros);
    console.log(jurosMesal);



};
<form>
      <h1>Simulação de Financiamento</h1>
      <label for="valor-financiado">Valor: </label>
      <input type="number" id="valor-financiado" data-valor required />
      <label for="prazo-anos">Prazo (anos): </label>
      <input type="number" id="prazo-anos" required />
      <label for="taxa-juros">Juros ao ano: </label>
      <input type="number" id="taxa-juros" value = 0 step="0.01" /><br />
      <button type="submit" data-simular>Simular</button>
    </form>
2 respostas

Consegui resolver com:

const taxaJuros = parseFloat(document.querySelector("#taxa-juros").value);

Caso alguém se interesse pela resposta

solução!

Oi Gabriela!

Vou dar uma breve explicação da causa do "bug".

A propriedade type=number no <input> restringe os valores do campo como números. Entretanto, quando executamos o comando

document.querySelector("#taxa-juros").value

O valor retornado é uma string.

typeof taxaJuros é uma stringEntão ao calcular o jurosMensal estaremos somando um número com uma string

const jurosMesal = 1 + taxaJuros;

Mas essa operação não faz muito sentido, o JS só sabe somar strings com strings ou números com números. Para que nenhum erro aconteça ele converte o número 1 para a string "1".

Agora, jurosMensal será o resultado de uma soma de strings: "1" + "0.08" que resulta em "10.08".

A sua solução de converter o valor retornado pelo <input> para um float foi excelente! Ela funciona porque agora no cálculo do jurosMensal as duas parcelas são números, então o JS consegue somar os dois sem problema.

Espero ter ajudado! Qualquer outra dúvida pode postar aqui!