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

Vírgula ou ponto na altura

No preenchimento do formulário tem pessoas que usam vírgula(ex: 1,80) e outros costumam usar ponto(ex: 1.80) vi que quando usamos vírgula no preenchimento o resultado do IMC vem como "NAN"

Existe alguma boa prática para que o código aceite tanto vírgula como ponto?

4 respostas

Oi, Valdney, tudo bem?

Bem observado! De fato, com o uso de vírgula o erro NaN é retornado. Uma possibiilidade que você pode usar, é a propriedade replace, na qual você substitui a virgula que o usuário coloca em ponto e o cálculo ser feito sem retornar erro, aqui vai um link sobre: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/String/replace Que tal implantar no código e nos mostrar como ficou?

Na function de retornar o imc eu deixei assim:

function calcularIMC(peso,altura){
    var imc = 0;
    imc = peso / (altura * altura);

    var imcReduzido = imc.toFixed(2);
    return imcReduzido.replace(',', '.');

}

Mas o erro continua

solução!

Oi, Valdney.

O método replace é para string, ou seja, como você está tentando fazer uma cálculo matemático, ele não consegue fazer um cálculo com string e retorna essa erro. Uma solução é nos usarmos o parseFloat que é uma função que recebe uma string e retorna um número decimal: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/parseFloat Nessa caso, você teria que passar essa função para que depois do uso do replace, ele volte a ser um número calculável.

A outra forma é utilizar uma regex, mas caso você ainda não tenha tido contato com as Expressões Regulares, talvez não seja uma forma interessante nesse momento. Aqui tem um exemplo do uso de regex para esse problema: https://pt.stackoverflow.com/questions/287937/regex-para-substituir-v%C3%ADrgula-e-espa%C3%A7os-juntos

Opa, conheço regEx, funcionou bem :)