这个二次方程式我做错了什么?

时间:2013-12-10 23:43:47

标签: java math

    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);

当正确的答案应为4和3时,系统打印出7.5和6.5。

我无法弄清楚我在这里做错了什么。

2 个答案:

答案 0 :(得分: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);

(我发现表达越简单,发现错误越容易)

答案 1 :(得分:2)

你的括号在错误的地方!注意:((Math.sqrt(turducken))/(2*a))只有2*a应该在分母中。