beginner with doubt in code

Asked

Viewed 75 times

0

hello! I started studying programming logic now, and I was doing a program to calculate the BMI, but for some reason when I use parseint in my weight and height variable it doesn’t do the right calculation. follows the code:

<meta charset = "utf-8">


<script>


function escrever(txt) {

    document.write( txt + "<br>");
}

alert("calculadora imc");

var nome = prompt("qual seu nome?");
var altura = parseInt(prompt("qual sua altura?"));
var peso = parseInt(prompt("qual o seu peso?"));
var calculaimc = (peso / (altura*altura));

escrever(nome + " o valor do seu imc é de: " + calculaimc);

if(calculaimc <= 18.5){
    escrever("seu imc esta abaixo do recomendado.");
}

if(calculaimc >= 18.6 && calculaimc <= 24.9){
    escrever("seu imc esta normal.");
}

if(calculaimc >= 25 && calculaimc <= 29.9){
    escrever(" seu imc indica sobrepeso.");
}

if(calculaimc >= 30 && calculaimc <= 39.9){
    escrever(" seu imc indica obesidade.");
}

if(calculaimc >= 40){
    escrever( "seu imc esta muito acima do recomendado.");
    alert("procure um medico");
}
</script>

2 answers

3

parsenInt() is working correctly. When you pass a floating point value ex. " 39.9" or 39.9 it is converted to an integer value 39, parseFloat() in turn converts to a floating point value ex. " 39.9" will be converted to 39.9 or 39 will be converted to 39.0. To fix your problem just use parseFloat() instead of parseint().

https://www.w3schools.com/jsref/jsref_parsefloat.asp

2

The problem is that you are using the function parseInt(string), that parses a string argument and returns an integer, to parse two entries belonging to the domain of the real numbers.

If you take for example my data whose altura == 1.86 and the peso == 85, the imc calculated with parseInt(string) would be imc == 85, for parseInt(1.86) == 1 and the program would recommend me a doctor.

To solve you must use parseFloat(string) that parses a string argument and returns a floating point number.

Then with the same data and function parseFloat(string) my body mass index is 24.5693143716 for parseFloat(1.86) == 1.86.

function escrever(txt) {

    document.write( txt + "<br>");
}

alert("calculadora imc");

var nome = prompt("qual seu nome?");
var altura = parseFloat(prompt("qual sua altura?"));
var peso = parseFloat(prompt("qual o seu peso?"));
console.log("Peso :" + peso);
console.log("Altura :" + altura);
var calculaimc = (peso / (altura*altura));

escrever(nome + " o valor do seu imc é de: " + calculaimc);

if(calculaimc <= 18.5){
    escrever("seu imc esta abaixo do recomendado.");
}

if(calculaimc >= 18.6 && calculaimc <= 24.9){
    escrever("seu imc esta normal.");
}

if(calculaimc >= 25 && calculaimc <= 29.9){
    escrever(" seu imc indica sobrepeso.");
}

if(calculaimc >= 30 && calculaimc <= 39.9){
    escrever(" seu imc indica obesidade.");
}

if(calculaimc >= 40){
    escrever( "seu imc esta muito acima do recomendado.");
    alert("procure um medico");
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.