Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

153
Vistas
Why does same javascript code give different result?

I am a beginner at javascript. I find following piece of code a bit difficult for me. I think both are same, and should have give the same result. But they are throwing different result.

var a = 5,
  b = 6,
  c = 7;

if (a + b > c || b + c > a || a + c > b) {
  let s = (a + b + c) / 2;
  let area = Math.sqrt(s * ((s - a) * (s - b) * (s - c)));
  console.log(`The area of the triangle is: ${area}`);
} else {
  console.log('Triangle does not exist');
}

It gives me a result. But when i try to take input from user and input the same value (5,6,7), find different result.

var a = prompt(),
  b = prompt(),
  c = prompt();

if (a + b > c || b + c > a || a + c > b) {
  let s = (a + b + c) / 2;
  let area = Math.sqrt(s * ((s - a) * (s - b) * (s - c)));
  console.log(`The area of the triangle is: ${area}`);
} else {
  console.log('Triangle does not exist');
}

Maybe I am wrong. But I just want know the reason.

Thanks.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

My assumption is that this is related to prompt() returning a string and not an integer. Therefore the additions of the variables a, b and c would concatenate the strings and only after that - caused by the comparison > and after division / - convert it to a number. So in order to fix this, I think using parseInt() to parse the numbers returned from prompt() would fix the issue

about 4 years ago · Juan Pablo Isaza Denunciar

0

The promt causes the variables to be defined as a string and as @Barmar pointed out in his comment, this changes the behavior of the '+' operation in your if-statement.

With numbers 1 +1 is returned as 2, with strings 11. What you can do is change the following: let s = (a + b + c) / 2;will give you 567/2 as you have strings. let s = (parseInt(a) + parseInt(b) + parseInt(c) ) / 2; will give you the desired result as the method parseInt() returns a intger value.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda