Hallo wieder mal, Wischmob meldet sich zurück!
Hier ist ein kleiner Code, den ich grade geschrieben habe, der aber leider
nicht so richtig funzt:
public class sqrt{
public static void main(String[] args){
// Die Variablen deklarieren
double wert=Double.parseDouble(args[0]);
double epsilon = 0.00000000000001;
double step = 10;
double wurzel = 0;
if(wert >= 0){
// Ausführen, solange die Bedingung erfüllt ist
while(Math.abs(wurzel*wurzel-wert)>epsilon){
step = step/10;
while(wert>wurzel*wurzel){
wurzel = wurzel+step;
//System.out.println(wurzel);
}
wurzel = wurzel-step;
//System.out.println(" "+step);
}
// Wurzel "ausdrucken"
System.out.println(wurzel);
}
else{
System.out.println("Negative Werte sind ungültig!");
}
}
}
Funktioniert alles soweit, Wurzel 0 okay, Wurzel 2 okay, Wurzel 4 okay, Wurzel 1: Nicht Okay!
Herauskommen bei 1, 9, 16 und mehr kommen immer etwas kleinere Werte raus, bei Wurzel 1 z.b. 0.9999999999999999 und bei 9 und 16 ähnliches.
woran mag das wohl liegen?
weiß jemand, wie man das verbessern kann?
danke, euer Wischmob!