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

A função prompt [Dúvida]

Fiz o programa esta funcionando bem porem notei que so aceita valores difigrados com . se por , ele da erro. exemplo 1.71m ok 1,71m da NAN

Acredito ser um erro de nao reconhecer virgula.

eta charset="UTF-8">
<script>
//Basico
function pulaLinha() {
    document.write("<br>");
}

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

//Função IMC
function calculaImc(altura,peso)
{
return peso / (altura * altura);
; //volta o resultado calculado
}
var nome = prompt("Informe seu nome ")
var alturaInformada = prompt(nome + ",Informe a sua altura");
var pesoInformado = prompt(nome + " ,Informe seu peso");

var imcTTL = calculaImc(alturaInformada,pesoInformado);
document.write(nome + " , seu IMC total é " + Math.round(imcTTL));

//mostra("IMC ULS:" + Math.round(imcUls));
//mostra("IMC PRL:" + Math.round(imcPrl));


</script>
2 respostas
solução!

Fala Ulisses, Beleza?

Na verdade não é um erro. É que o JS não recenhece a , como número float mesmo. O padrão é o ponto.

Para deixar sua aplicação pronta para receber valores com virgula, adiciona um replace no final de cada prompt.

Esse método de replace é exclusivo de strings. O cálculo funciona porque o JS entende que não há dívisões e multiplicações para strings, mas se fosse uma soma, por exemplo, você teria uma concatenação no lugar da operação de soma.

Sendo assim eu gosto de converter o resultado em Number antes de usá-los em calculos.

Ficou assim:

var alturaInformada = Number(
  prompt(nome + ',Informe a sua altura').replace(',', '.')
)
var pesoInformado = Number(
  prompt(nome + ' ,Informe seu peso').replace(',', '.')
)

Testa ai e fala se te atende.

Abs!

Obrigado