JavaScript возвращает ответ только иногда - PullRequest
0 голосов
/ 27 сентября 2019

Я изучал JavaScript и работал над созданием рабочего калькулятора, который решает квадратные уравнения для обоих ответов.Я столкнулся с проблемой, что иногда формула возвращает NaN, когда я знаю реальный ответ.Например, использование 1 для b, -5 для a и -14 для c возвращает "NaN, NaN", но должно быть 7, -2.Есть ли причина для этого или есть ошибка в моем коде?Заранее спасибо

function quadForm() {
  var b = document.getElementById("oppb").value;
  var a = document.getElementById("a").value;
  var c = document.getElementById("c").value;
  var ansplsunrd = (-1 * b + Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);
  var ansmnsunrd = (-1 * b - Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);
  document.getElementById("result").innerHTML = ansplsunrd + ", " + ansmnsunrd;
}
<h2>Quadratic Calculator</h2>
<p class="var-1">b:</p><input type="number" class="calc-field" id="oppb" placeholder="Insert B" value="0">
<p class="var-2">a:</p><input type="number" class="calc-field" id="a" placeholder="Insert A" value="0">
<p class="var-3">c:</p><input type="number" class="calc-field" id="c" placeholder="Insert C" value="0"> <br> <br>
<button type="button" onClick="quadForm()">Calculate</button>
<p id="result">Result shown here</p>

1 Ответ

0 голосов
/ 27 сентября 2019

Я понял, как исправить свои ошибки и сделать мой код более чистым, добавив переменные для каждого раздела уравнения.Я разделил процесс создания b напротив, деление 2a и степень b ^ 2-4ac.Затем сделайте оператор if / else во фрагменте.Спасибо тем, кто указал на проблему отрицательного дискриминанта, вот что привело меня сюда.Мне просто нужно добавить «я» к ответу для точности.

function quadForm() {
 var b = document.getElementById("oppb").value;
 var a = document.getElementById("a").value;
 var c = document.getElementById("c").value;
 var discrim = Math.pow(b, 2) - (4 * a * c);
 var divby = 2*a;
 var oppb = -1*b;
 if (discrim < 0) {
    var negrt = (oppb + Math.sqrt((discrim*-1)))/(divby);
    var posrt = (oppb - Math.sqrt((discrim*-1)))/(divby);
    document.getElementById("result").innerHTML = negrt + "i" + ", " + posrt + "i";
} else {
    var ansplsunrd = (-1 * b + Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);
    var ansmnsunrd = (-1 * b - Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);
    document.getElementById("result").innerHTML = ansplsunrd + ", " + ansmnsunrd;
}
}
<h2>Quadratic Calculator</h2>
<p class="var-1">b:</p><input type="number" class="calc-field" id="oppb" placeholder="Insert B" value="1">
 <p class="var-2">a:</p><input type="number" class="calc-field" id="a" placeholder="Insert A" value="-5">
  <p class="var-3">c:</p><input type="number" class="calc-field" id="c" placeholder="Insert C" value="-14"> <br> <br>
 <button type="button" onClick="quadForm()">Calculate</button>
  <p id="result">Result shown here</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...