@Arlivs

Не работает код по решению квадратных уравнений. Что не так с дискриминантом?

Выдает в консоли, что дискриминант = 8 ,а два корня показывают Nan. Хотя дис должен быть минусовым.
let a = 1;
let b = 6;
let c = 5;
let d = Math.round(((b ** 2) - 4 * a * c) ** 1/2);

if (b => 1, c => 1) {
    b = "+ " + b
    c = "+ " + c
}

console.log(`${a}х² ${b}x ${c} = 0`)

if (d == 0){
    let x = -1 * +b / (2 * +a);
    console.log(`D = ${d}`);
    console.log(`x = ${x}`);
}
if (d < 0) {
   console.log("Нет корней")
}
if (d > 0) {
    let xone = (-1*+b - d) / (2 * +a);
    let xtwo = (-1*+b + d) / (2 * +a);
    console.log(`D = ${d}`) ;
    console.log(`x1 = ${xone}`);
    console.log(`x2 = ${xtwo}`);
}
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
Seasle
@Seasle Куратор тега JavaScript
Во-первых: не Math.round(((b ** 2) - 4 * a * c) ** 1/2); а ((b ** 2) - 4 * a * c) ** (1 / 2);.
Во-вторых: тут какой-то бред описан:
if (b => 1, c => 1) {
  b = "+ " + b
  c = "+ " + c
}

В условии Вы создаете 2 функции, причём проверите только последнюю. Меняете на
let stringifiedB = b >= 0 ? `+ ${b}` : `- ${Math.abs(b)}`;
let stringifiedC = c >= 0 ? `+ ${c}` : `- ${Math.abs(c)}`;

console.log(`${a}х² ${stringifiedB}x ${stringifiedC} = 0`);


На счет знака запятой в различных условиях, будет использован только самый последний.
if (false, true) {
  console.log(1);
} else {
  console.log(2);
}
// 1

if (false, true, false) {
  console.log(1);
} else {
  console.log(2);
}
// 2

А функция в условии всегда будет выполнять if-блок.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы