Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro conversão dólar real

Quando o parâmetro "dólar" é múltiplo de 3 está dando um erro, alguém sabe dizer o porque?

ex: dolar = 3 era pra dar o valor 14,40 porem no console aparece o valor 14,3999...

Sei que 0,99... = 1 ou 14,3999... = 14,40

Então o resultado esta "correto", mas porque o JavaScript/navegador escreve dessa forma?

obs: O que piora as coisas é que múltiplos de 3 acima de 9 dai o valor vem errado mesmo. ex: 9*4,80 = 43.199999999999996

function cambioDolarReal(dolar){
    return dolar*4.80;
}
1 resposta
solução!

Olá, Guilherme! Tudo bem?

O que você está observando é um comportamento comum em muitas linguagens de programação, não apenas no JavaScript, e está relacionado à maneira como os números de ponto flutuante são representados internamente.

Os computadores usam a base 2 (binário) para representar números, e nem todos os números podem ser representados exatamente nessa base. Por exemplo, o número 1/10, que é simples de representar na base 10, tem uma representação infinita na base 2, assim como o número 1/3 tem uma representação infinita na base 10.

Quando você faz operações com esses números, os erros de arredondamento podem se acumular, levando a resultados que parecem estranhos se você esperava uma precisão exata. Isso é conhecido como "erro de precisão de ponto flutuante".

Aqui está um exemplo de como você pode lidar com isso no seu código:

function cambioDolarReal(dolar){
    return parseFloat((dolar * 4.80).toFixed(2));
}

Neste exemplo, o método .toFixed(2) é usado para arredondar o resultado para duas casas decimais, e parseFloat() é usado para converter o resultado de volta para um número (porque .toFixed() retorna uma string).

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.