Java: Решение квадратного уравнения с вещественными числами используя epsilon
По условию задачи требуется прочитать 3 вещественных коэффициента и рассчитать квадратное уравнение, при этом коэффициенты и дискриминант нужно сравнивать через эпсилон. Преподаватель говорит что в коде ошибки, сломал уже голову, прощу помощи
import java.util.Scanner;
public class QuadraticEquation {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Введите коэффициент А:");
double coefficientA = scanner.nextDouble();
System.out.println("Введите коэффициент B:");
double coefficientB = scanner.nextDouble();
System.out.println("Введите коэффициент C:");
double coefficientC = scanner.nextDouble();
double epsilon = 1.0e-10;
if (Math.abs(coefficientA) >= epsilon) { // coefficientA != 0
double discriminant = Math.pow(coefficientB, 2) - 4 * coefficientA * coefficientC;
if (discriminant < -epsilon) { // discriminant < 0
System.out.println("Дискриминант меньше 0, действительных корней нет");
} else if (Math.abs(discriminant) < epsilon) { // discriminant == 0
double x = -coefficientB / 2 * coefficientA;
System.out.printf("Корень один, X = %.2f", x);
} else {
double x1 = (-coefficientB + Math.sqrt(discriminant)) / (2 * coefficientA);
double x2 = (-coefficientB - Math.sqrt(discriminant)) / (2 * coefficientA);
System.out.printf("Корней два, X1 = %.2f X2 = %.2f", x1, x2);
}
} else {
if (Math.abs(coefficientB) >= epsilon) { // coefficientB != 0
double x = -coefficientC / coefficientB;
System.out.printf("Корень Х = %.2f", x);
} else {
if (Math.abs(coefficientC) < epsilon) { // coefficientC == 0
System.out.println("Корнями могут быть любые действительные числа, т.к. все коэффициенты равны 0");
} else {
System.out.printf("Корней нет, т.к. %f не равен 0. Решения нет.", coefficientC);
}
}
}
}
}
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Вот это чего такое??
double x = -coefficientB / 2 * coefficientA;
Должно быть
double x = -coefficientB / (2 * coefficientA);