[英]I making a simple quadratic equation solver in java by using the quadratic formula. This is what happened:
我的代码:
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
代替。 ^
运算符实际上是按位XOR运算符 ; 没有指数运算符。 (但是,有一个Math.pow()
函数 。)
除了^
是XOR而不是幂之外,您的求解器还存在另一个问题:有时B 2小于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 );
}
您可以编写b * b
或Math.pow(b,2)
而不是b ^ 2
,这是b
与2
的按位异或(异或)。
看来您要在此建立三角函数。 不记得这个名字了,但是我可以说b是要平方的? 如果是这样,请使用Math.pow(numberToSquare,theSquareNumber)一行将如下所示:Double x1 =(-b + Math.sqrt(Math.pow(b,2)-4 * a * c))/( 2 * a)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.