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

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

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 Report

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 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!