Neste artigo você vai aprender a como realizar um cálculo aceitando vírgula para separar casas decimais em JavaScript, de uma maneira muito simples!
Conteúdo também disponível em vídeo:
Fala programador(a), beleza? Bora aprender a realizar cálculos com vírgula em JS!
A premissa básica é que o JS funciona com o padrão de números americano, ou seja, ao contrário do nosso
Então não devemos mudar o comportamento padrão dele, e sim se adaptar a maneira que ele calcula
A forma mais fácil de fazer isso é converter o número com vírgula para float, realizar a operação e depois voltar para o formato que desejamos novamente
Até por que as vezes não controlamos como recebemos os dados, eles podem vir formatados do back-end no padrão brasileiro, então esta conversão é a melhor pŕatica
Vamos ver um exemplo prático:
var a = "12,13"; var b = "48,12" var n1 = parseFloat(a.replace(',', '.')); var n2 = parseFloat(b.replace(',', '.')); var resultado = n1 + n2; console.log(resultado); // 60.25
Utilizamos o replace para trocar o ponto pela vírgula, e o método parseFloat para transformar esta string em um flot
Veja que conseguimos realizar o cálculo normalmente, supondo que os números venham com vírgula no lugar de ponto e em string
Imprimimos o resultado final que é a operação matemática que vamos realizar com os números convertidos
Agora caso você precise voltar a formatação original é só fazer o processo inverso, converter para string e trocar o ponto pela vírgula
Conclusão
Neste artigo vimos como realizar um cálculo aceitando vírgula para separar casas decimais
Não mudamos o comportamento padrão de JavaScript, e sim convertemos o nosso valor para o que a linguagem usa
Assim obtemos o valor final da operação e depois podemos converter novamente para o nosso formato
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube
Muito obrigado pela ajuda!!! Descobri este site hoje mas com certeza irei utiliza-lo mais vezes, ótimo trabalho.
Essa função não da pra ser usava se o número estiver na casa dos mil
Por exemplo 1.528,35
O resultado seria “1.528”