2013-12-10 67 views
3
a = 1, b = -7, c = 12 

    public static void quadratic(double a, double b, double c){ 
    double r1; 
    double r2; 
    double turducken; 
    turducken = Math.pow(b,2)-(4*a*c); 
    r1 = (-1*b) + ((Math.sqrt(turducken))/(2*a)); 
    r2 = (-1*b) - ((Math.sqrt(turducken))/(2*a)); 

    System.out.println("r1: "+r1); 
    System.out.println("r2: "+r2); 

系統打印出7.5和6.5時,正確的答案應該是4和3我在做這個二次方程式有什麼問題?

我不能,我做錯了這裏完全弄清楚什麼。

+2

不是'(-1 * b)'與'-b'相同嗎? –

+0

我也會使用'b * b'而不是'Math.pow(b,2)'。 'Math.pow'允許任何'double'作爲指數,包括非整數,可能實現爲'Math.exp(2 * Math.log(b))',這需要比計算多得多的計算'b * B'。 – ajb

+0

@ajb:已經建議在下面(儘管沒有任何解釋) –

回答

10

應該是:

r1 = ((-1*b) + Math.sqrt(turducken))/(2*a); 
r2 = ((-1*b) - Math.sqrt(turducken))/(2*a); 

(即一切由2 * a分)

你可以簡化你的表情略有進一步:

double sq = Math.sqrt(b*b - 4*a*c); 
r1 = (-b + sq)/(2*a); 
r2 = (-b - sq)/(2*a); 

(我找到了表達越簡單,就越容易它是發現錯誤)

+0

它總是最終變得簡單。謝啦。 –

2

你有你的圓括號在錯誤的地方!注意:((Math.sqrt(turducken))/(2*a))當只有2*a應該在分母中。