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 ✓.