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

155
Vistas
¿Por qué el mismo código javascript da un resultado diferente?

Soy un principiante en javascript. Me resulta un poco difícil seguir un fragmento de código. Creo que ambos son iguales y deberían haber dado el mismo resultado. Pero están arrojando resultados diferentes.

 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'); }

Me da resultado. Pero cuando trato de tomar información del usuario e ingresar el mismo valor (5,6,7), encuentro un resultado diferente.

 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'); }

Tal vez yo estoy equivocado. Pero solo quiero saber la razón.

Gracias.

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

0

Mi suposición es que esto está relacionado con prompt() que devuelve una cadena y no un número entero. Por lo tanto, las sumas de las variables a , b y c concatenarían las cadenas y solo después de eso, causadas por la comparación > y después de la división / , se convertiría en un número. Entonces, para solucionar esto, creo que usar parseInt() para analizar los números devueltos desde prompt() solucionaría el problema

about 4 years ago · Juan Pablo Isaza Denunciar

0

El mensaje hace que las variables se definan como una cadena y, como señaló @Barmar en su comentario, esto cambia el comportamiento de la operación '+' en su declaración if.

Con números 1 +1 se devuelve como 2, con cadenas 11. Lo que puedes hacer es cambiar lo siguiente: let s = (a + b + c) / 2; te dará 567/2 ya que tienes cuerdas. let s = (parseInt(a) + parseInt(b) + parseInt(c) ) / 2; le dará el resultado deseado ya que el método parseInt() devuelve un valor entero.

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