int a = 1;
int b = 6;
int c = 5;
double x1 = (-b + Math.sqrt(b^2 - 4*a*c))/(2*a);
double x2 = (-b - Math.sqrt(b^2 - 4*a*c))/(2*a);
System.out.println("x=" + x1 + x2);
Выход:
x=NaNNan
int a = 1;
int b = 6;
int c = 5;
double x1 = (-b + Math.sqrt(b^2 - 4*a*c))/(2*a);
double x2 = (-b - Math.sqrt(b^2 - 4*a*c))/(2*a);
System.out.println("x=" + x1 + x2);
Выход:
x=NaNNan
b^2
не делать то, что вы думаете, что делает в Java. Вместо этого напишите b*b
. Оператор ^
на самом деле the bitwise-XOR operator; нет оператора экспоненты. (Существует, однако, Math.pow()
function.)
Вы можете написать b * b
или Math.pow(b,2)
вместо b^2
, который является bitwise xor (исключающее или) из b
с 2
.
В дополнение к ^
быть XOR вместо того, чтобы сила, ваш решатель имеет другую проблему: иногда, В меньше, чем 4AC, в этом случае уравнение имеет только комплексные решения. Ваш код должен проверить это условие перед вызовом Math.sqrt
, чтобы избежать получения ответа NaN
.
И, наконец, ваш результат неправильный: ваш println
будет производить конкатенацию корней без промежутка между ними, вместо того, чтобы печатать их по отдельности.
Вот ваш код после исправления:
int a = 1;
int b = 6;
int c = 5;
int d = b*b - 4*a*c;
if (d < 0) {
System.out.println("No real solutions.");
} else {
double sqD = Math.sqrt(d);
double x1 = (-b + sqD)/(2*a);
double x2 = (-b - sqD)/(2*a);
System.out.println("x=" + x1 + " " + x2);
}
's/\ brational/real/g',' s/irrational/complex/g' – delnan
_ «в этом случае уравнение имеет только иррациональные решения». Вы имеете в виду комплексные решения. И результат корректен, так как он совпадает с «System.out.println ((« x = »+ x1) + x2);' –
@delnan Большое спасибо за исправление моей терминологии. – dasblinkenlight
Похоже, что вы пытаетесь сделать тригонометрической функции здесь. Не помню имя, но я могу сказать, что b означает квадрат? Если это так, используйте Math.pow (numberToSquare, theSquareNumber) Одна строка будет выглядеть так: Двойной x1 = (-b + Math.sqrt (Math.pow (b, 2) - 4 * a * c))/(2 * a)
Вы должны добавить следующий if-statement: 'if (x1 + x2 == NaNNan) {x = Batman}'. – bourbaki4481472