Equação de Segundo Grau com delta negativo não funciona

Equação de Segundo Grau

ax² + bx + c = 0

Informe o valor do constante ‘a’ da equação:
4
Informe o valor do constante ‘b’ da equação:
5
Informe o valor do constante ‘c’ da equação:
10

4,00X² + (5,00)X + (10,00) = 0

    double a, b, c, delta, x1, x2;
    delta=Math.sqrt(Math.pow(b, 2) - (4*a*c));

Delta: NaN

X1: NaN
X2: NaN

E não é pra funcionar mesmo. Você não pode calcular a raiz quadrada de um número negativo.

Esse é um comportamento esperado numa equação de segundo grau.

Era essa sua dúvida?

Abraço.

Boa tarde amigo

Como ser resolve o problema de número negativo?

delta=Math.sqrt(Math.pow(b, 2) - (4ac));

Deveria aparecer Delta = -135,00

        int a = 4, b = 5, c = 10;

        double tmp = Math.pow(b, 2) - (4 * a * c);

        if (tmp > 0) {
            tmp = Math.sqrt(tmp);
        }

        System.out.println(tmp);

Acho que você não entendeu o que postei acima, então vamos lá:

a = 4;
b = 5;
c = 10;
b_ao_quadrado = b * b; // 25
a_vezes_c_vezes_4 = 4 * a * c; // 160
b_ao_quadrado_menos_4_vezes_a_vezes_c = b_ao_quadrado - a_vezes_c_vezes_4; // -135

b_ao_quadrado_menos_4_vezes_a_vezes_c é -135 (centro e trinta e cinco negativo).

Lendo a documentação do método Math.sqrt(), ele diz claramente:

If the argument is NaN or less than zero, the result is NaN.

Se o argumento é NaN ou menor que zero, o resultado é NaN.

Entendeu agora o porque do resultado NaN?

Abraço.

Não posso colocar o Math.pow() dentro do Math.sqrt()?

Claro que pode, mas aí não vai ter como tratar o delta negativo e você vai continuar tendo o mesmo problema.

O aluno Math.sqrt() não pode receber nota negativa do professor. kkkk

Nunca vai fecha a conta existe caso de delta negativo.

Separando o Math.pow() do Math.sqrt() não vai acontecer isso => Math.sqrt(-delta) no caso: -135,00?

A ideia de separar é justamente para você poder verificar se o delta é positivo.
Se é positivo, você calcula a raíz, se for negativo, você lança uma exceção.