Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

158
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!