我想创建一个 Java 方法,它返回区间中二次方程的最低根(0, 1)
。如果区间内没有解,则返回1
。我需要一些帮助,使它成为一种有效的算法。
这是我目前的方法:
public static float getLowestRoot(float A, float B, float C) {
float D = B*B - 4*A*C;
if(D < 0) return 1;
float sD = (float) Math.sqrt(D);
float x1 = (-B + sD) / (2*A);
float x2 = (-B - sD) / (2*A);
if(x2 < x1) {
float tmp = x2;
x2 = x1;
x1 = tmp;
}
if(x1 > 0 && x1 < 1) return x1;
if(x2 > 0 && x2 < 1) return x2;
return 1;
}
这种方法可以完成工作,但我想知道是否有压缩算法的方法,因为现在感觉很臃肿。