0

この二次方程式は、私が返すと判断した文字列に負の数を返しません。式は次のとおりです。

public class QuadraticEquation  {

    String final0;
    public String calculate(int a, int b, int c) {
        double done1 = ((-1 * b) + Math.sqrt((b * b) - (4 * a * c))) / (2 * a);
        double done2 = ((-1 * b) - Math.sqrt((b * b) - (4 * a * c))) / (2 * a);
        final0 = "x = " + (done1) + " or x = " + (done2);

        return final0;
    }
}

-3、13、および -4 のような a、b、および c の値を持つ方程式を想像してみてください。これの戻り値は -0.3 (繰り返し) と -4 です。しかし、この方程式は正の値しか返さないため、この場合は 0.3 (繰り返し) と 4 が返されます。

注: これは Java のエラーであり、数学のエラーではないと思います。数学の間違いである場合は、コメントでお知らせください。適切なフォーラムに速やかに投稿します。ありがとう。

4

3 に答える 3

2
public static void main(String[] args) {

    String final0 = calculate(-3, 13, -4);
    System.out.println(final0);

}
public static String calculate(int a, int b, int c) {
    String final0 ;
    int i = -1 * b; // -1 * 13 = -13
    System.out.println(i);

    int j = 4 * a * c; // 4 * -3 * -4  = 4 * 12  = 48
    System.out.println(j);

    double sqrt = Math.sqrt((b * b) - j); // sqrt ((13 * 13) - 48) = sqrt(169 - 48) = sqrt(121) = 11
    System.out.println(sqrt);

    double d = i + sqrt; // -13 + 11 = -2
    System.out.println(d);

    int k = 2 * a; // 2* -3 = -6
    System.out.println(k);

    double done1 = d / k; // -2 / -6 = 1/3 = 0.3333333333
    System.out.println(done1);

    double done2 = (i - sqrt) / k;
    final0 = "x = " + (done1) + " or x = " + (done2);

    return final0;
}

メソッドをより多くのローカル変数に分解すると、Java の数学が正しく機能することがわかります。

于 2013-05-12T20:25:08.277 に答える