Guten Tag,
ich hab ein kleines Programm geschrieben nur mit if um die Loesungen von quadratischen Gleichungen abzufragen.
Hier mal das Programm:
Klar sicher nicht sehr elegant doch darum geht es jetzt auch nicht sondern meine Frage ist wie Frage ich die double Werte a,b und c auf == 0.0 ab ohne einen Rundungsfehler zu bekommen?
Hatte da eine Epsilon Umgebung gedacht doch da a, b und c ja eingegeben werden soll habe ich damit ein Problem.
Kann mir da jemand einen kleinen Tipp geben?
LG
ich hab ein kleines Programm geschrieben nur mit if um die Loesungen von quadratischen Gleichungen abzufragen.
Hier mal das Programm:
Java:
int i=0;
final double epsilon=1E-6;
double a=Double.parseDouble(args[i++]);
double b=Double.parseDouble(args[i++]);;
double c=Double.parseDouble(args[i++]);;
double d=b*b-4*a*c;
if((a==0)&&(b!=0)&&(c!=0))
System.out.printf("Es existiert eine einzige relle Loesung: x1=%.2f", -c/b);
else if(a==0&&b==0&&c!=0)
System.out.println("Kein x erfuellt die Gleichung");
else if(a==0&&b==0&&c==0)
System.out.println("Jedes x ist Loesung der Gleichung");
else if(d>0) {
d=Math.sqrt(d);
System.out.printf("Es existieren zwei reelle Loesungen:%n x1 = %.2f%n x2 = %.2f%n%n",
(-b+d)/(2*a),(-b-d)/(2*a));
}
else if(d<0)
System.out.printf("Es existieren zwei komplexe Loesungen:%n Realteil: %.2f Imaginaerteil: i*%.2f%n"
+ " Realteil: %.2f Imaginaerteil: i*%.2f%n",
-b/(2*a),Math.sqrt(c/a-(b/(2*a))*(b/(2*a))),
-b/(2*a),-(Math.sqrt(c/a-(b/(2*a))*(b/(2*a)))));
else
System.out.printf("Es existiert eine doppelte reelle Loesung:%n x1 = x2 = %.2f%n", -b/(2*a));
Klar sicher nicht sehr elegant doch darum geht es jetzt auch nicht sondern meine Frage ist wie Frage ich die double Werte a,b und c auf == 0.0 ab ohne einen Rundungsfehler zu bekommen?
Hatte da eine Epsilon Umgebung gedacht doch da a, b und c ja eingegeben werden soll habe ich damit ein Problem.
Kann mir da jemand einen kleinen Tipp geben?
LG