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.