Problema com limite do double

5 respostas
C

Boa tarde pessoal. Sou novo por aqui, preciso de uma ajuda. Estou desenvolvendo um programa que calcula o resultado de uma equação do segundo grau, e tenho dificuldade quando se deve calcular a raiz de delta . Quando se calcula uma equação do segundo grau manualmente, normalmente se arredonda o resultado da raiz quando não é redondo, como o computador pega o resultado inteiro, o resultado passa do tamanho do tipo double. Pensei em usar um BigDecimal, mas tenho pouco conhecimento dessa classe. Penso que se existisse uma classe que arredonda-se o resultado da raiz para dois números após a virgula seria mais util.
Por favor, alguém pode me ajudar? :lol:

import java.util.Scanner;

public class raizes {

	public static void main(String[] args) {

		Scanner teclado = new Scanner (System.in);

		double coefa;
		double coefb;
		double coefc;
		double raiza = 0;
		double raizb = 0;
		double delta=0;

		System.out.println( " Digite coeficiente a: " );
		coefa = teclado.nextDouble();

		if (coefa != 0) {

			System.out.println( " Digite coeficiente b: ");
			coefb = teclado.nextDouble();

			System.out.println( " Digite coeficiente c: ");
			coefc = teclado.nextDouble();

			delta = Math.pow(coefb,2) - 4 * coefa * coefc;
			raiza =  (-coefb + Math.sqrt(delta))/(2 * coefa);
			raizb =  (-coefb - Math.sqrt(delta))/(2 * coefa);

			System.out.println( raiza + raizb);

		}
		else 
			System.out.println( " Não é uma equação do segundo grau ");
	}
}

5 Respostas

Fernando_Generoso_da

Para resultados exatos, utilize BigDecimal:

http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigDecimal.html

é só da uma estudada na api dele.

Fernando

C

Não existe uma classe que arredonde o resultado para duas casas após a virgula?

T

Em vez de imprimir

System.out.println( raiza + raizb);

Use

System.out.printf ("As raízes são %.2f e %.2f %n", raiza, raizb);

Isso mostrará exatamente 2 casas depois da vírgula. OK?

C

:smiley: Muito obrigado, você é muito gente boa. valeu mesmo, e vou estudar um pouco sobre a classe BigDecimal, ganho um conhecimento a mais assim :lol:

T

No caso de aprender a usar printf, você precisa consultar a documentação de java.util.Formatter ( http://java.sun.com/javase/6/docs/api/java/util/Formatter.html ).

Criado 23 de janeiro de 2009
Ultima resposta 23 de jan. de 2009
Respostas 5
Participantes 3