Wisch Schmob: Wurzelbestimmung mit ...

Beitrag lesen

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!