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

Usar número separado com " . " ou com " , "

É possível usar os valores dos números separados com vírgula? Pois fiz o teste e o cálculo retorna NaN.

6 respostas
solução!

Olá Diego! Em JavaScript o separador da parte fracionária de um número é o ponto (.). Não é possível a utilização com vírgula (,), pois assim o JavaScript não reconhece como número, por isso retorna NaN, que significa "Not a Number" ("Não é um número").

Sim, 5,5+8,5. Qual tipo de conta quer fazer?

Olá Victor! Como mencionei acima para o Diego essa operação com vírgulas dá erro no JavaScript, pois o mesmo não reconhece a vírgula (,) como separador, apenas o ponto (.). O correto é 5.5 + 8.5.

Obrigado André, Então é regra do JavaScript mesmo.

Victor, fiz o teste e retorna NaN.

Olá, gostaria de fazer uma observação quanto a questão da virgula. No exercício usamos o função prompt que nos retorna a informação que o usuário digitou na tela. A informação retornada por esta função é do tipo texto, porém como utilizamos os operadores de multiplicação (*) e divisão (/), essas informações são convertidas implicitamente para números. Existem algumas funções no JavaScript que nos permitem trabalhar com textos e números, com elas poderíamos resolver essa questão.

Observação: as informações abaixo não foram apresentadas no curso, caso tenha curiosidade, você pode verificar como poderia ser feito o tratamento para a virgula, caso contrário, não veja o restante da resposta e tenha em mente que é possível manipular textos de tal modo que sejam convertidos para números (que utilizam o ponto para separar a parte fracionária, conforme o André disse).

Fiz um script simples mostrando a utilização das funções replace e parseFloat e do operador typeof.

<meta charset="UTF-8">
<script>

    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(mensagem) {
        document.write(mensagem);
        pulaLinha();
    }

    function calculaImc(peso, altura) {
        return peso / (altura * altura);
    }

    function converteParaNumero(texto) {
        return parseFloat(texto.replace(",", ".")); // substituí virgula pelo ponto e converte para número
    }

    var peso = prompt("Informe seu peso");
    var altura = prompt("Informe sua altura");

    mostra("Tipo da variável peso: " + (typeof peso));
    mostra("Tipo da variável altura: " + (typeof altura));
    pulaLinha();

    var pesoNumerico = converteParaNumero(peso);
    var alturaNumerico = converteParaNumero(altura);
    var imc = calculaImc(pesoNumerico, alturaNumerico);

    mostra("Tipo da variável pesoNumerico: " + (typeof pesoNumerico));
    mostra("Tipo da variável alturaNumerico: " + (typeof alturaNumerico));
    pulaLinha();

    mostra("IMC calculado: " + imc);
</script>

Documentação do replace, parseFloat, e typeof (lá no final da página)

Olá Mateus,

Obrigado pela dica!