簡體   English   中英

試圖編寫二次公式?

[英]Attempting to program quadratic formula?

我是Java的新手,我的第一個項目是建立計算器。

試圖編寫二次方程式; 盡管我沒有錯誤,但是我得到了錯誤的答案。

void quadratic() {
    if((b*b-4*a*c) < 0){
        System.out.println("The answer is imaginary.");
    }
    else {
        System.out.println(
             "The two roots x values of the quadratic function "
             + a + "x^2 + " + b + "x + " + c + " are "
             + ((-b) + (Math.sqrt((b*b)-(4*a*c))/(2*a))) + " and "
             + ((-b) - (Math.sqrt((b*b)-(4*a*c))/(2*a)))
        );
    }
}

如果我替換a=1, b=4, c=4 ,我得到-4和-4。

如果我用a=1, b=1, c=-12代替,我得到2.5和-4.5。

可能只是數學上的錯誤,但我認為公式是正確的。

不,論壇並不完全正確。 您將錯誤的事物除以2*a

我的建議是排除判別式計算,並刪除多余的括號。 這將使正確編寫代碼變得更加容易:

void quadratic() {
    double discriminant = b*b-4*a*c;
    if(discriminant < 0) {
        System.out.println("The answer is imaginary.");
    } else {
        System.out.println(
                "The two roots x values of the quadratic function "
                + a + "x^2 + " + b + "x + " + c + " are "
                + (-b + Math.sqrt(discriminant)) / (2*a) + " and "
                + (-b - Math.sqrt(discriminant)) / (2*a)
                );
    }
}

您缺少括號,應該是

(((-b) + (Math.sqrt((b*b)-(4*a*c)))/(2*a))) + " and " + (((-b) - (Math.sqrt((b*b)-(4*a*c)))/(2*a))))

您需要將整個事情除以2a。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM