繁体   English   中英

我使用二次公式在Java中制作了一个简单的二次方程求解器。 这是发生了什么:

[英]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 * bMath.pow(b,2)而不是b ^ 2 ,这是b2按位异或(异或)。

看来您要在此建立三角函数。 不记得这个名字了,但是我可以说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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM