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

´Conversão da variável valorUnitário em float (Desafio Carrinho de Compras)

Notei que na aula os professores não realizaram a conversão da variável valorUnitário para um número:

function adicionar() {
    //recuperar valores nome do produto, quantidade e valor
    let produto = document.getElementById('produto').value;
    let nomeProduto = produto.split('-')[0];
   ** let valorUnitario = produto.split('R$')[1]; **
    let quantidade = document.getElementById('quantidade'); 
    alert(nomeProduto);
    alert(valorUnitario);
    alert(quantidade.value);
    let preco = quantidade.value * valorUnitario;
    alert(preco);

Seria uma melhor prática fazer essa conversão para um número ? No meu código converti a variável valorUnitário para float, pois considerei uma possível mudança no valor para um valor não inteiro, por exemplo R$1400.50 Ficou dessa forma:

let valorUnitario = parseFloat(produto.split('R$')[1]);

Outra dúvida, caso o valor em reais estivesse com uma vírgula "," (exemplo R$1400,50) em vez de ponto, teria que realizar o método split() utilizando a vírgula como separador e depois incluir o ponto ('.') com o join() para obter o número 1400.50 ? Teria alguma forma mais simples de fazer essa conversão da vírgula para o ponto ?

2 respostas
solução!

Olá!

Você está no caminho certo ao converter a variável valorUnitario para um número de ponto flutuante usando parseFloat(). É uma boa prática garantir que os valores numéricos sejam tratados como números, especialmente quando você precisa realizar operações matemáticas, como multiplicação ou soma. Isso evita problemas de concatenação de strings em vez de cálculos numéricos.

Quanto à sua dúvida sobre como lidar com valores em reais que usam vírgula como separador decimal, você pode substituir a vírgula por um ponto antes de converter o valor para float. Isso pode ser feito usando o método replace(). Aqui está um exemplo de como você pode fazer isso:

let valorUnitario = parseFloat(produto.split('R$')[1].replace(',', '.'));

Neste exemplo, replace(',', '.') substitui a vírgula por um ponto, permitindo que parseFloat() converta corretamente a string para um número de ponto flutuante.

Espero ter ajudado e bons estudos!

Obrigado ! Não conhecia esse método replace(), simplificou a solução que eu estava pensando : )